Jeg har et andet syn på sagen, som måske (ikke) er som spørgeren ønsker. Men:
Hvis dine tilfældige tal skal ligge mellem 1 og 100, så lav et array med 100 indgang, put tallene fra 1 til 100 ind i arrayet, og bland det så godt (det kan vi komme ind på senere).
Nu kan du tage de 10 første tal ud. Og senere de 10 næste - og der er ingen dubletter.
Nu er der jo ingen der siger noget om at det skal være int og eller Integer så her er et andet forslag...det er langt fra så hurtigt som arne's sort first & merge og jeg går også ud fra at du mente int, men her kommer den aligevel.
Og hvis din skal optimeres lidt, Carsten - så skal der vel bruges System.arraycopy, da jeg vil mene den er noget(meget) hurtigere end at løbe begge arrays igennem :)
Det er minimalt hvad System.arraycopy giver.. skulle op i 100000000 gennemløb før jeg kunne se en foreskel på 4 sekunder. Arnes i iøvrigt stadig hurtigere ifølge mine microbenchmarks.. men den tager heller ikke højde for duplikater i samme array... det bliver vist heller ikke meget hurtigere.. har prøvet lidt med specielle sorterings algoritmer og optimerede libraries men det er mere til besvær end man får ud af det... med Set og autoboxing bliver det ikke nemmere ;)
Hvad jeg kender til System.arraycopy, så tager den referencerne fra de to arrays og smelter dem sammen på en eller anden måde (jeg tvivler på, at den metode løber dem igennem) - og det må da alt andet lige være noget hurtigere end lineært at løbe 2 arrays igennem. Men det kan godt være jeg tager fejl?
Jeg vover endnu et bud. Jeg læser spørgsmålet sådan at der ikke kan være dubletter inde i de enkelte randomiserede talsekvenser men kun sekvenserne imellem (?). Jeg antager at sekvenserne har en øvre eller nedre grænse (her nedre):
int[] a = {1,3,5,7,29,11,10,4,8,13}; int[] b = {1,9,5,30,21,12,17,4,36,13};
int OUT_SIDE_RANGE = Integer.MIN_VALUE; int duplicates = 0;
int[] c = new int[a.length+b.length-duplicates]; System.arraycopy(a, 0, c, 0, a.length); int cur = a.length; for(int i = 0; i < b.length; i++) if(b[i] != Integer.MIN_VALUE) c[cur++] = b[i];
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.