In diesem Artikel werden hauptsächlich relevante Informationen zum Java-Set-Durchlauf und Vergleich von Implementierungsklassen vorgestellt. Freunde in Not können sich auf
Java-Set-Durchlauf und Vergleich von Implementierungsklassen
Die Set-Sammlung in Java ist eine Sammlung, die keine wiederholten Elemente enthält. Schauen wir uns zunächst die Traversal-Methode anpackage com.sort; import java.util.HashSet; import java.util.Iterator; import java.util.Set; /** * 一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2, * @author Owner * */ public class SetTest2 { public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("a"); set.add("b"); set.add("c"); set.add("d"); set.add("e"); set.add("e");//不能放入重复数据 /** * 遍历方法一,迭代遍历 */ for(Iterator<String> iterator = set.iterator();iterator.hasNext();){ System.out.print(iterator.next()+" "); } System.out.println(); System.out.println("********************"); /** * for增强循环遍历 */ for(String value : set){ System.out.print(value+" "); } } }
Wenn wir eine selbstdefinierte Klasseninstanz einfügen, z. B. eine Person-Klasseninstanz, müssen wir den Hashcode und die gleichen Methoden selbst neu schreiben. Schreiben Sie sie mit ihren eigenen Schlüsselfeldern um. Denn bei Verwendung von HashSet wird die Methode hashCode() aufgerufen, um zu bestimmen, ob der Hash-Code-Wert des bereits im Set gespeicherten -Objekts mit dem Hash-Code-Wert des hinzugefügten Objekts übereinstimmt , fügen Sie es direkt hinzu. Wenn sie konsistent sind, vergleichen Sie die Methode equal. Wenn die Methode true zurückgibt, bedeutet dies, dass das Objekt hinzugefügt wurde und kein neues Objekt hinzugefügt wird.
Lassen Sie uns eine weitere wichtige Implementierungsklasse der Set-Sammlung analysieren:
natürliche Reihenfolge der Elemente, um die Elemente zu sortieren . oder sortiert nach dem bei der Erstellung des Sets bereitgestellten Komparator, abhängig vom verwendeten Konstruktor.
nach der sortierten -Liste anzeigen oder
Set<String> set = new TreeSet<String>(); set.add("f"); set.add("a"); set.add("b"); set.add("c"); set.add("d"); set.add("e"); System.out.println(set);
package com.sort; import java.util.Comparator; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; public class TreeSetTest3 { public static void main(String[] args) { Set<String> set = new TreeSet<String>(new MyComparator()); set.add("a"); set.add("b"); set.add("c"); set.add("d"); set.add("e"); set.add("A"); for(Iterator<String> iterator = set.iterator();iterator.hasNext();){ System.out.print(iterator.next()+" "); } } } class MyComparator implements Comparator<String>{ @Override public int compare(String o1, String o2) { return o2.compareTo(o1);//降序排列 }
Hinweis: Stellen Sie sicher, dass Sie eine Sortierregelklasse definieren, die die ComparatorSchnittstelle implementiert, ähnlich der obigen Methode
package com.sort; import java.util.Comparator; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; public class TreeSetTest2 { public static void main(String[] args) { Set<Person> set = new TreeSet<Person>(new PersonComparator()); Person p1 = new Person(10); Person p2 = new Person(20); Person p3 = new Person(30); Person p4 = new Person(40); set.add(p1); set.add(p2); set.add(p3); set.add(p4); for(Iterator<Person> iterator = set.iterator();iterator.hasNext();){ System.out.print(iterator.next().score+" "); } } } class Person{ int score; public Person(int score){ this.score = score; } public String toString(){ return String.valueOf(this.score); } } class PersonComparator implements Comparator<Person>{ @Override public int compare(Person o1, Person o2) { return o1.score - o2.score; } }
ändern
Das obige ist der detaillierte Inhalt vonDurchlaufen von Java-Set-Sammlungen und Vergleich von Implementierungsklassen (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!