This week's book giveaway is in the OCAJP 8 forum.
We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes java uniqueId creation Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of OCA Java SE 8 Programmer I Study Guide this week in the OCAJP 8 forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "java uniqueId creation" Watch "java uniqueId creation" New topic

java uniqueId creation

vinitha simon
Ranch Hand

Joined: Dec 13, 2007
Posts: 64
My requirement is

1) A file will be created and will be feeded as input to another system which will read the data's and will insert into DB . My requirement is when
ever i create the file i should have three fields(lets say field1,field2,field3) with unique number .

a) field1 can have 5 digits

b) field2 can have 13 digits .

c) feild3 can have 10 digits .

All 3 fields should be numeric . There will be 10 users . These fields should be unique when ever they generate the file. Any solution is
higly appreciated ..
Maneesh Godbole
Saloon Keeper

Joined: Jul 26, 2007
Posts: 10747

Check out java.util.Random
It has methods like nextInt and nextLong which will be useful to you.

[How to ask questions] [Donate a pint, save a life!] [Onff-turn it on!]
Campbell Ritchie

Joined: Oct 13, 2005
Posts: 44555
You can't be certain that random numbers will be unique. It might be possible to use primary keys from the database.
Pat Farrell

Joined: Aug 11, 2007
Posts: 4659

Smells like homework to me, so here is a hint.

How serious are your "unique" requirements? As posted up thread, Random will give you numbers that may be unique.

Do you mean unique within a run? or across runs?

If it has to be across runs, you need some permanent store, and a database is really nice since all good ones will also assign a unique value for you.

If its just within a run, learn about HashSet.
Satya Maheshwari
Ranch Hand

Joined: Jan 01, 2007
Posts: 368
As I understand the requirement. there are 10 users, and all of them can generate a file for themselves containing 3 numbers. And these numbers should be unique to a file i.e. they should not be in a file generated by some other user. And I am assuming that the numbers in the file must be unique w.r.t. database too in which they will finally be inserted.

Since this is a multi-user system, I guess you need to maintain a unique number generator which is thread safe(since multiple users can invoke it at the same time). This unique number generator could either use a permanent storage(like database table) to fetch a unique number or could fetch it 'in-memory' by maintainig counters or something similar. The key thing would be to maintain the thread safety of the unique number generator.

Thanks and Regards
arulk pillai
Ranch Hand

Joined: May 31, 2007
Posts: 3359
Have a look at MersenneTwister.

[] | [Java job hunting know how] | [Java resumes]
Satya Maheshwari
Ranch Hand

Joined: Jan 01, 2007
Posts: 368
Hi Arulk
I agree Mersenne twister would generate very high-quality pseudorandom numbers. My only doubt is, how are you ensuring that the same number would never be generated again

Graeme Byers
Ranch Hand

Joined: Apr 16, 2004
Posts: 127
Use a sequence number :
For Oracle Oracle
MySql ://,143867,143867.

NEVER EVER attempt to implement your own sequence numbers in any data base - performance will be degraded by a task locking the sequence number while other tasks wait for the lock to be released.
Don Solomon
Ranch Hand

Joined: Jul 20, 2008
Posts: 48
Just use a timestamp. Always unique.

Software development is an exercise in thinking not coding.
Campbell Ritchie

Joined: Oct 13, 2005
Posts: 44555
Originally posted by Don Solomon:
Just use a timestamp. Always unique.
Even if two instances are executed simultaneously on different computers?
Rob Spoor

Joined: Oct 27, 2005
Posts: 20132

Although the chances are very very slim if you use System.nanoTime()*, it is indeed possible. You would need to include an ID for the computer itself to somehow.

* System.currentTimeMillis() is not accurate enough by a longshot.

How To Ask Questions How To Answer Questions
I agree. Here's the link:
subject: java uniqueId creation
It's not a secret anymore!