2017-05-09 4 views
1

Die Liste wiederholt viele der gleichen Werte, ich möchte sie löschen. Vielleicht überprüft jemand, was falsch ist, oder gibt einen neuen Weg, dies zu tun?Wie lösche Duplikate aus ListView <HashMap<>>

class Duplicats implements Comparator { 
    public int compare(Object obj1, Object obj2) { 
     HashMap<String, String> test1 = (HashMap<String, String>) obj1; 
     HashMap<String, String> test2 = (HashMap<String, String>) obj2; 
     if(test1.get("name").equalsIgnoreCase(test2.get("name"))){ 
      return 0; 
     } 
     return 1; 
    } 
} 

Antwort

0

Angenommen, Sie mit den Werten in Ordnung sind in obj1 diejenigen in obj2 ersetzen (oder umgekehrt, wenn Sie den Auftrag wechseln):

Map<String, String> objCombined = new HashMap<String, String>(); 

//Add the 2nd object's items 
objCombined.putAll((HashMap<String, String>) obj2); 

//Add the first object's items, replacing duplicates 
objCombined.putAll((HashMap<String, String>) obj1); 

Wenn Sie obj2 Werte diejenigen sein wollen beibehalten, wechseln Sie einfach die Reihenfolge der put Aufrufe oben.

+0

Also, wie sollte ich meinen Code ändern? Ich möchte ohne Duplikate auflisten – Torwopik

+0

@Torwopik Ihr Code führt eigentlich nichts auf. Es ist ein Komparator, mit dem man eine Liste ändern kann. Anstatt den oben gezeigten Code zu verwenden, benutze einfach den Code in meiner Antwort und dann ist "objCombined" deine Liste ohne Duplikate. –

0

Also wie geht es von dieser Position aus?

{ 
... 

        HashMap<String, String> controllers = new HashMap<>(); 

        controllers.put("id", id); 
        controllers.put("name", name); 

        DevicesList.add(controllers); 


        } 
Verwandte Themen