Generating unique hascodes based on arrays

Hi, I have a problem that I'm looking to solve but perhaps I'm getting it more complicated than really is.
So, I have an object (BlaBla) that contains an array of bytes. BlaBla objects are stored in a hashtable. So, I need that the hashtable returns an object when they have the same array content (if they are in the same order).
For example, two BlaBlas with the following arrays:
[2, 3]
[3, 2]are different, but the following BlaBlas are supposed to be treated as the same:
[0,0,0,3]
[0,0,0,3]Basically, I want to count the occurences of the same sequences of bytes of BlaBlas in my Hashtable<BlaBla, Integer>.
My approach is trying to write a hashCode() for BlaBla that returns an unique code for each different array but the same code for equal arrays, but with no success.
Would you, Java gurus :P, suggest a more efficient approach ?
Thanks you.
Edited by: crp on Jan 26, 2009 6:32 PM

crp wrote:
My approach is trying to write a hashCode() for BlaBla that returns an unique code for each different array That's only possible if the number of possible arrays is <= 2^32.
If your array will always hold exactly one int, then the hashcode is the int.
If your array can hold one or two ints, but you constrain each int to only 2^16 possible values, then you can put one int in the high order two bytes, and the other in the low order two bytes.
And so on. If you know enough about your possible values, it may be possible to set up your hashcode to be unique, but it can very easily become impractical.
Hashcodes are not intended to be unique.

Similar Messages

  • How to generate a Unique key based on a some String value

    Hello every one,
    I am sorry , If I post this question in wrong group... I have a requirement to generate a unique key ( what every it may be alpha, numeric or alpha numeric) based on some String..
    For ex : String str = "AbCX" - Gives a unique key based on "AbCX" value..
    Is there any way we can get the unique value using Java ?
    Thanks

    May be not what you are looking for, but here's may idea:
    use a sequence (db sequence) and add it the the string value. This way the value is unique, because the sequence is unique. So you could omit the string theoretically, but your requirement is met.
    It's very easy to get a unique sequence number from the db using java, depending of the technology you use (which you did not say :-( )
    Timo

  • Generating unique no.'s using random function

    Hi,
    I'm trying to generate unique values for row and column say from 0-3
    and I read some where that if we use random.nextInt() we will get unique values but I'm getting repeated values.I'll appreciate if anyone can help me in this matter.Here's the code:
    import java.io.*;
    import java.util.*;
    import java.lang.*;
    public class random{
    public static void main(String args[])
    int b[]=new int[4];
    int c[]=new int[4];
    int i;
    Date date;
    Random random;
    date=new Date();
    random = new Random(date.getTime());
    for(i=0;i<4;i++)
    digit = random.nextInt(4);
    b=digit;
    for(i=0;i<4;i++)
    digit = random.nextInt(4);
    c[i] = digit;
    for(i=0;i<4;i++)
    System.out.println("column array is" + c[i]);
    for(i=0;i<4;i++)
    System.out.println("row array is" + b[i]);
    }//end main
    }//end class
    Thanks
    Suneetha.

    here is my code for generating a random number but not a unique number. with a big enough number the possibility getting a unique is high so you may modify it to suit you need:
      private void initial_node()
        float Qxyd = -1, Qyzd = -1, Cxyd = -1, Cyzd = -1;
        long seed;
        Q_table = new float[row][col];
        seed = (long)( Math.random() * System.currentTimeMillis() * 100000000 );
        Random rand1 = new Random( seed );
        seed = (long)( Math.random() * System.currentTimeMillis() * 100000000 );
        Random rand2 = new Random( seed );
        seed = (long)( Math.random() * System.currentTimeMillis() * 100000000 );
        Random rand3 = new Random( seed );
        seed = (long)( Math.random() * System.currentTimeMillis() * 100000000 );
        Random rand4 = new Random( seed );
        for( int i = 0; i < row; i++ )
          do
            Qxyd = (float)( rand1.nextFloat() + (float)rand1.nextFloat() / 3 );
          while( Qxyd < 0.35 || Qxyd == -1 );
          Q_table[5] = Math.abs( Qxyd );
    do
    Qyzd = (float)( rand2.nextFloat() + (float)rand2.nextFloat() / 7 );
    while( Qyzd < 0.45 || Qyzd == -1 );
    Q_table[i][3] = Math.abs( Qyzd );
    do
    Cxyd = (float)( rand3.nextFloat() + (float)rand3.nextFloat() / 9 );
    while( Cxyd > 0.15 || Cxyd == -1 );
    Q_table[i][8] = Math.abs( Cxyd );
    do
    Cyzd = (float)( rand4.nextFloat() + (float)rand4.nextFloat() / 11 );
    while( Cyzd > 0.10 || Cyzd == -1 );
    Q_table[i][9] = Math.abs( Cyzd );

  • Std FM/Program generate Unique Numbers

    Hi,
    Do we have any stnd FM/Program which generates a unique number based on the combinations of the incoming data!
    Appreciate your help and <removed_by_moderator>
    Edited by: Julius Bussche on Jun 24, 2008 6:52 PM

    Hi,
    First creat NUMBER RANGE in SNRO tcode,
    next use below code:
    CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
      EXPORTING
        object           = w_object
      EXCEPTIONS
        foreign_lock     = 1
        object_not_found = 2
        system_failure   = 3
        OTHERS           = 4.
    CALL FUNCTION 'NUMBER_GET_NEXT'
      EXPORTING
        nr_range_nr             = '01'
        object                  = w_object
      IMPORTING
        number                  = zcor_header-cornr
      EXCEPTIONS
        interval_not_found      = 1
        number_range_not_intern = 2
        object_not_found        = 3
        quantity_is_0           = 4
        quantity_is_not_1       = 5
        interval_overflow       = 6
        buffer_overflow         = 7
        OTHERS                  = 8.
    CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'
      EXPORTING
        object           = w_object
      EXCEPTIONS
        object_not_found = 1
        OTHERS           = 2.

  • Unique system based number

    Hi,
    I,m trying to generate a unique number based on the system my app runs on. Something like a HD serial number or so...
    How can I do this? Is there any way to do this in a platform independent way, or should I just give up hope?

    Hi,
    Thanks for your quick responses, it is greatly appreciated.
    However, they are not very useful I think. Maybe I haven't properly described what these numbers will be used for.
    I am trying to develop a licensing mechanism according to the following objectives:
    The first time an app is run, a unique product ID is generated based on the system it is running on, and a temporaray license is created to run for 30 days. After expiration, users can buy a license key based on their product number. With this approach I hope to accomplish a failry good security, because my target audience is not a typical "hacker environment" meaning that they will probably not reverse engineer my app, to go around licensing issues.
    It is therefore acceptable that there is a very small chance that the product ID allready exists, but each time the app is started it should be able to generate the same product number, to check that the app is running on the same system it was started the first time.
    So, basicly what i'm looking for is a way to generate a unique number the first time, with the ability to generate the same number over and over again later on...

  • How to generat multiple invoices based on per employee/contractor/services?

    Hello Experts / Dina,
    I am in situation where customer is in business of body shopping and charges to his final customer based on individual invoice / per employee /contracor & customer services. This was happening in legacy system but after the implementation of Oracle Project costing and Oracle Project billing, customer is not able to generate invoices per employee services. Rather consolidated invoices are getting generated.
    How to achieve this functionality in oracle project billing?
    Lets take example - On Project P1 for customer ABC, 3 below employees are working on different task for 3 months.
    Now after one month employees have been billed as shown below.
    Emp 1 - 1000 USD - for 100 Hrs
    Emp 2 - 2000 USD - for 200 Hrs
    Emp 3 - 1000 USD - for 50 hrs
    Now @ end of the month when invoice is getting generated is 1 invoice including 3 lines of amount total 4000 USD. There is problem; customer wants that there should be 3 different invoices per employee shoud generated based on above mentiond 3 diff lines for customer ABC.
    I guess with oracle projects billing - You can split the invoice based on Accrue through date ( which is not possible in this case ) and agreement ( which is also not possible in this case ) and different currency ( which is again not possible in this case) - I may be wrong when saying it is not possible. plz correct me if I am wrong.
    even I guess billing extension wont work. So is there any way to achive this?
    Right now only option i am thinking is let single invoice of 4000 USD with 3 different lines should pass to AR and while priniting the invoice customer can create 3 diff prints which includes individual lines. and while applying receipts on the single invoice in the system, customer can apply the receipts to indivual lines.
    but I am not sure about AUDIT issues.. Can some one think about any AUDIT issues comes to this approch or issues with TAX rounding amount issues ?
    Infact I would like to solve this issue with the help of Oracle Projects billing and not with custom invoice print program. I guess someone from you experts can figure it out to generate muiltple invoice based on employees / suppliers / contractors / materials etc.
    A suggestion on Extension / customization / seeded functionality of Oracle Project billing on thi issue would be gr8 help.
    Please help.
    Thanks
    Edited by: oracle_samba on Jan 7, 2013 1:06 AM
    Edited by: oracle_samba on Jan 7, 2013 1:07 AM

    Hi Dina,
    First of all thanks for your update :-) Your solution looks much promising.
    I thought of using billing extension but rejected on the ground that I would end up in generating events based on employee for their corsponding billig amounts so finally generating a consolidated invoice only in One GDI run. But what i was missing was pre-processing extension and running the extention in loop based on employee count.
    I am fully sure business would not have any issues of auto approving and releasing invoice upon generation. But my question is "is it possible to just approve the invoice & not release it using auto approve and release extension?" The reason is I think when GDI runs it only deletes Unapproved invoice & spare Approve invoices. - So please suggest.
    Also please validate my understanding about your solution with an existing example -
    As with the current example, there are 3 EMP presents so need to run GDI 3 times and develop pre-processing ext in a such a way that at each time it will put on hold on all the billable items except EMP1, and EMP2 and EMP3 on each consecutive run respectivly. And ensure that Auto Approve and release extension should be used in order to avoid overriding previously generated invoice? Am I right ?
    Many Many thanks for solution !!!
    Regards,
    :-)

  • Generating a report based on two analytics(for ex:PO and PR)

    I have a question regarding generating reports on two analytics.
    In our scenarios,
    We need to generate a report based on Purchase order and Purchase request.Is it possible in OBIA?
    if yes,please provide the solution.
    Thanks in advance

    Hi ,
    Thanks for your valuable time.
    We are in designing phase of the project. we need to know ,Is there any inbuilt dashboards or reports built using both PO and PR repositories?
    I would like to explain with ex:
    Let's say we need a report or dashboard containing few fields from PO and few fields from PR.Let's assume both PO and PR data available at same granularity.
    Do we have any such inbuilt reports or dashboard?
    If not,could we customize the report generation using both PO and PS tables?
    Please provide the solution.
    Thanks in advance.
    Edited by: user3561029 on Aug 31, 2008 9:03 PM

  • How to generate a report based on account description

    Hi Experts,
    How to generate the report based on account description, that means
    i want to generate a report on G/L account and which account numbers are having 'CASH' description.
    for Ex: G/L a/c no: 25010026-Cash and Bank balance(des)
    G/L a/c no: 101000-Cash-freight
    like this.
    please help to do this,
    good answer will be appreciated with points,
    Thanks in advance
    Venkat

    Hi shana,
    my requirement is
    I have G/L account numbers, that account numbers having some descriptions, in these some descriptions are belongs to cash transactions, i want to generate the report on these cash transactions, and the report is " G/L account, debit cash, credit cash, balance".
    is it possible or not,
    thanks in advance,
    Venkat

  • How to generate a Spool based on output type in SAP Script

    Hi all,
    Is it possible to generate a spool based on output type for a SAP Script (without explicitly trigger in Tcode VF02 and selecting output type from there )
    Actually a background job will be scheduled to process output types selected in VF01 / VF02
    When output type is ZABC in the background a work flow is called pdf is generated

    Any suggestions please

  • Creating login page - direct users to a unique file based on unique id?

    Hello - I am in the process of creating a login page that will direct users to a unique page based on their unique id.  I would normally go to Server Behaviors>User Auth>Log In User, but that gives me the option of browsing only one file for all usernames and that's not what I need.  So basically, if the user logs in with the Caterpillars username, it takes them directly to the Caterpillars page and if they log in with the Butterflies username, it takes them to the Butterflies page (yes, it's a preschool with goofy classroom names!).  If it matters, I'm using MySql and the page is .php.  I tried to upload the php, but it gave me an error "the content type of this attachment is not allowed" - not sure what that's all about - sorry.
    Thanks in advance!!

    I was trying to do the latter - store the path for each individual file (catepillars.html, butterflies.html, etc) in the database with the login info.
    My problem is that I can't get it to direct to that page in the code.  My understanding is that I have to tell it in within this code <?php echo $row_MM_Username['login']; ?> that if username is caterpillars then they go directly to caterpillars.html...
    For your desire you don't need extra database fields, recordsets, session variables or anything else if you want to direct username to a static username.html file
    Instead use a dynamic META redirect in <head> of success.php page based on session variable for Username and append .html to the username.
    <META http-equiv="refresh" content="0;URL=http://example.com/<?php echo $SESSION['MM_Username']; ?>.html">
    You could add the show if users is logged in server behavior to success.php and wrap the meta redirect in it so that if the user is logged in then you are redirected to username.html or just add a restrict access SB so that you can not visit success.php (and be redirected to username.html) unless you are logged in.
    Does that solve your problem?
    It may have been easier to explain if your original inquiry mentioned that you wanted logged in users to go to a static .html page based on their username like username.html (sighs). FWIW I would still follow my original recommendation of using one dynamic file to display different users info on one page because as mentioned you only have to maintain one file vs. multiple static files.

  • How to generate a form based on PL/SQL-procedures instead of tables?

    Hi all,
    I'm trying to generate a form based on a package, which has procedures for insert/update/delete/select. In Forms, this is no problem. It is unclear to me how to do this in Oracle Designer (10g). Online Help of Designer doesn't clear things up a lot, it seems I have to generate a table API and a module component API. But when I do this, these are generated as file and no definitions are created in Designer. So what do I base my block on?
    Can somebody assist me in this?
    Kind regards,
    Ronald

    Hi:
    Thank you for reply to my question.
    I have tried your codes and apply them the following the form. However, I always got the following error:
    Error: (WWV-00000)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    My codes is:
    declare
    request_no number;
    blk varchar2(30) := 'DEFAULT';
    l_url varchar2(4000);
    begin
    request_no := p_session.get_value_as_NuMBER(
    p_block_name => blk,
    p_attribute_name => 'A_WORK_REQUEST_ID');
    l_url := 'portal30.wwa_app_module.link?p_arg_names=_moduleid&p_arg_values=11880470335&p_arg_names=_sessionid&p_arg_values=&p_arg_names=work_request_id&p_arg_values='||request_no;
    portal30.wwa_app_module.set_target(l_url,'call');
    end;
    then,
    I created another form which has two fields and the dattype of pk is varchar2 and change manually put the pk's p_arg_value into the url.
    e.g.
    l_url:='PORTAL30.wwa_app_module.link?p_arg_names=_moduleid&p_arg_values=9029417810&p_arg_names=WORK_AREA_CD&p_arg_values=APP';
    portal30.wwa_app_module.set_target(l_url,'call');
    However, I still get the error message as below:
    Error: (WWV-00000)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    No conversion performed for type INTEGER, value . (WWC-49102)
    Your help would be highly appreciated.
    Wei Ye

  • How to define an action which generates a pdf based on a smartform formular

    Hello everybody,
    I am looking for a solution to define an action which generates a pdf based on a smartform formular (my printer
    is LOCL and there will be no other printers in the system defined).
    With the standard print action for the smartforms formular nothing is printed on printer local.
    Best regards,
    Angelika

    Hmm, no replies yet...
    Am I in 'uncharted territory' with this issue?

  • How to generate unique filenames??

    i need to be able to generate unique files from a servlet..
    my initial instinct was to use the seesion id as part of the filename, however as this file will be embedded in the responding html, this is not safe, as the user will only have to look at the html source to view a session id value.
    i am now considering to use the date/time of the creation of a session as the unique identifier for the file, however this will not work if two sessions can be created at the same time.
    my question thefore is if no two sessions can have the same date and time?
    if not.. can anyone give me an idea as how to produce unique filenames?

    If you are actually creating a file, why not usethe
    java.io.File.createTempFile() method?how does that help with prducing a unique value to use
    as the name of a file?
    with that method i still need to supply the filename
    as one of its arguments!
    No you don't. You provide a prefix and suffix and it fills in the middle with something guaranteed to be unique, in the directory you specify. Here is the javadoc:
    createTempFile
    public static File createTempFile(String prefix,
    String suffix,
    File directory)
    throws IOException
    Creates a new empty file in the specified directory, using the given prefix and suffix strings to generate its name. If this method returns successfully then it is guaranteed that:
    1. The file denoted by the returned abstract pathname did not exist before this method was invoked, and
    2. Neither this method nor any of its variants will return the same abstract pathname again in the current invocation of the virtual machine.
    This method provides only part of a temporary-file facility. To arrange for a file created by this method to be deleted automatically, use the deleteOnExit() method.
    The prefix argument must be at least three characters long. It is recommended that the prefix be a short, meaningful string such as "hjb" or "mail". The suffix argument may be null, in which case the suffix ".tmp" will be used.
    To create the new file, the prefix and the suffix may first be adjusted to fit the limitations of the underlying platform. If the prefix is too long then it will be truncated, but its first three characters will always be preserved. If the suffix is too long then it too will be truncated, but if it begins with a period character ('.') then the period and the first three characters following it will always be preserved. Once these adjustments have been made the name of the new file will be generated by concatenating the prefix, five or more internally-generated characters, and the suffix.
    If the directory argument is null then the system-dependent default temporary-file directory will be used. The default temporary-file directory is specified by the system property java.io.tmpdir. On UNIX systems the default value of this property is typically "/tmp" or "/var/tmp"; on Microsoft Windows systems it is typically "c:\\temp". A different value may be given to this system property when the Java virtual machine is invoked, but programmatic changes to this property are not guaranteed to have any effect upon the the temporary directory used by this method.
    Parameters:
    prefix - The prefix string to be used in generating the file's name; must be at least three characters long
    suffix - The suffix string to be used in generating the file's name; may be null, in which case the suffix ".tmp" will be used
    directory - The directory in which the file is to be created, or null if the default temporary-file directory is to be used
    Returns:
    An abstract pathname denoting a newly-created empty file
    Throws:
    IllegalArgumentException - If the prefix argument contains fewer than three characters
    IOException - If a file could not be created
    SecurityException - If a security manager exists and its SecurityManager.checkWrite(java.lang.String) method does not allow a file to be created
    Since:
    1.2

  • How to generate unique numbers

    hi all,
    I want to generate unique numbers always starting from 1 using a single sql query and I dont want to use a sequence and i dont think rownum will be helpful for generating unique numbers in all cases . how to do this ?
    thanks & regards,
    kumar.

    If two users get the MAX from temp, they would be updating with the same value for two different rows.If TEMP is a genuine temporary table, this is not an issue, because the data in a temporary table is only visible within a session.
    The big problem with this approach is the mutating table one: we cannot issue the requisite select statement from a BEFORE INSERT trigger. So this solution is only going to work with a view and an INSTEAD OF INSERT trigger.
    Another, more workable, solution is to use a code control table. This can be (should be) another temporary table, with one row holding one column - next value for TEMP.ID. Normally we would rule out such a solution because it serializes access to the inserted table, but as this is only on a per session basis, it doesn't matter.
    CREATE OR REPLACE TRIGGER tmp_bir BEFORE INSERT ON temp1 FOR EACH ROW
    DECLARE
      ln NUMBER;
    BEGIN
      SELECT nvl(code1.next_id,1) INTO ln
      FROM code1;
      :NEW.id := ln;
      UPDATE code1
      SET    next_id := ln+1;
    END;Beware: coded freehand, so may need debugging.
    Cheers, APC

  • Fine Grained Access ERROR on INSERT when generating unique keys

    I'm using VPD/Fine Grained Access Control (FGAC) to implement security on my 9i backend. I created a security policy function that returns the predicate 'owner = USER'; - each of the tables has an additional column titled OWNER which contains the name of the logged-in user. Every time a user inserts a record, a BEFORE INSERT trigger fires (for every row) and inserts the USER name into the OWNER column. This is fairly straightforward and ensures that users can see only their rows. Using the DBMS_RLS.add_policy procedure, I attached the security policy to several tables and made it effective upon SELECT, UPDATE, INSERT, and DELETE statements.
    However, the frontend Java application (custom-made) generates unique IDs (sequences are not used) by selecting max(ID)+1 from the primary key columns of the tables. The problem is that the predicate is appended to the SELECT max(ID)+1 query to limit the max(ID) to only those rows where 'owner = USER'. Therefore, the max(ID) generated is not the largest ID for the entire table, but only the largest among the USER rows.
    So unless that USER happens to have the the largest ID in the whole table (and it has worked then), a primary-key violation error will be returned and the INSERT operation will be aborted.
    How can I allow every USER to select from AND get the absolute largest ID from the PK column without allowing that user to select records that don't belong to him? If I had developed the application, I would have made use of sequences on the back-end to generate unique primary key IDs. Unfortunately, I don't have this option and must work with the application as is.
    NOTE: the front-end Java application understands only the base table names, NOT Views created by me on the server. If the answer to this problem involves views, how can I make use of them on the backend when the front-end code does not recognize them?
    Any help is greatly appreciated!
    Michael

    first you could use default column values, not a trigger, which is more expensive.
    if your apps already assumes full access to table to get max id ( another RT ), this is bad. Current RLS can not really help if you can not change the apps because of this flaw logic ( you can store the maxid anywhere, why scanning the whole table to find it )

Maybe you are looking for