2016-04-11 9 views
-3

Ich habe 2 Liste von Zahlen, und ich möchte nur die eindeutige Nummer, die Ausgabe, die die Zahl bedeutet, die nur einmal in der Liste angezeigt werden. Und es muss doppelt sein, nicht ganze Zahlen.So erhalten Sie eindeutige Zahlen aus einer 2 Liste von Array

Beispiel:

Liste 1: {1,1, 8,0, 4,0, 1,1}

Liste 2: {1,1, 8,0, 4,0}

"8.0" und "4.0" sind insofern einzigartig sowohl Liste 1 als auch Liste 2.

Ich brauche einen Weg, um Zahlen wie 8.0 und 4.0 zu identifizieren, wo es übereinstimmt und nur einmal in jeder Liste vorkommt.

Ich habe versucht, mit diesem Code, aber die Ausgabe ist nicht was ich will.

Double[] i = {100.00, 100.00, 17246.40, 2568.00, 0.20, 9845.00, 5768.18, 0.20, 30.00, 63.68, 83.56, 444.39, 144.20, 
       2889.00}; 

     Set<Double> uniqKeys = new TreeSet<Double>(); 
     uniqKeys.addAll(Arrays.asList(i)); 

     System.out.println("List 1: " + uniqKeys); 

Dies ist der Ausgang für den obigen Code

Liste 1: [0,2, 30,0, 63,68, 83,56, 100,0, 144,2, 444,39, 2568,0, 2889,0, 5768,18, 9845,0, 17246,4]

Aber was ich will ist der Ausgang sein

17246,4, 2568,0, 9845,0, 5768,18, 30,0, 63,68, 83,56, 444,39, 144,20, 2889,0

Dank.

+0

Wo Ihre Codes versucht wird? –

+1

Sie können Java 'HashSet' für Datenstruktur und Algorithmus betrachten. –

+0

hast du 2 listen von zahlen? wie int [] list1 = {1, 1, 2, 1, 3, 4, 5}; int [] Liste2 = {10, 10, 20, 10, 30, 4, 50}; und willst du sortierte Ausgabe? –

Antwort

0

Versuchen Sie folgendes:

Integer[] i = {1, 1, 2, 1, 3, 4, 5}; 
Set<Integer> st= new TreeSet<Integer>(); 
st.addAll(Arrays.asList(i)); 

oder usinn Java8

Integer[] myarr = new Integer[]{1, 1, 2, 1, 3, 4, 5}; 
Stream.of(myarr).distinct().forEach(x -> System.out.print(" " + x)); 
+0

Sie können alternativ die 'Arrays.asList (i)' als Konstruktorparameter übergeben, anstatt einen separaten Aufruf von 'addAll' zu machen. –

Verwandte Themen