Ich habe den folgenden Code (mit einigen Beispieldaten), und wünschte zu prüfen, ob es eine bessere oder performante Art und Weise ist jedes Element der Liste der Karte auf die nachfolgende zu vergleichen:Wie vergleicht man Elemente einer Liste mit Elementen einer Karte in Java?
import java.util.*;
public class CompareElements {
private static List<Map<String, String>> sample = new ArrayList<>(0);
private static int MIN = 0;
private static int MAX = 10;
static {
populateListOfMaps();
}
/*
* This is the main part of the question, rest is just to generate test data..
*/
public static void main(String[] args){
// Can we simplify this part using lambda's or any library?
for (int i = 0; i < sample.size() -1; i++) {
for (int j = i+1; j < sample.size(); j++) {
Map<String, String> referenceMap = sample.get(i);
Map<String, String> candideMap = sample.get(j);
if(referenceMap.get("key").equalsIgnoreCase(candideMap.get("key"))){
System.out.println("Equal : " + i + " || " + referenceMap.get("key") + " and "+ j + " || " + candideMap.get("key") + " are pairs");
} else {
System.out.println("Not equal : " + i + " || " + referenceMap.get("key") + " and "+ j + " || " + candideMap.get("key") + " are pairs");
}
}
}
}
private static void populateListOfMaps(){
if(sample.size() <= 10){
Map<String, String> someMap = new HashMap<>(0);
someMap.put("key", "value" + randInt(MIN, MAX));
sample.add(someMap);
populateListOfMaps();
}
}
public static int randInt(int min, int max) {
Random rand = new Random();
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
}
Meine Anforderung ist, jedes Element der Liste der Karten zu vergleichen und dann auf Gleichheit zu prüfen, um doppelte zu entfernen, das ist ein einfacher Teil, aber jede Karte in meiner Echtzeitanwendung hat 2 Schlüsselwerte (aber beide sind String .. nein benutzerdefiniertes POJO-Objekt).
Der obige Code funktioniert, aber ich möchte diesen prägnanteren und leistungsfähigeren Code machen.
Können wir Lambdas oder Streams verwenden?
Alle Hinweise. . meint? –
"Echtzeit" bedeutet; mit einer konsistenten Latenz. "echte Welt" bedeutet; in der realen Welt, dh. nicht theoretisch. –
"Der obige Code funktioniert, aber ich möchte diesen prägnanteren und performanteren Code erstellen." - Ich denke, dass Ihre Frage in http://codereview.stackexchange.com/ gepostet werden sollte, da sie off-topic für StackOverflow ist. –