Cet article présente principalement des informations pertinentes sur le parcours et la comparaison de Java Set et la comparaison des classes d'implémentation. Les amis dans le besoin peuvent se référer à
Parcours et comparaison de Java Set Comparaison des classes d'implémentation <.>
La collection Set en Java est une collection qui ne contient pas d'éléments répétés. Tout d'abord, regardons la méthode de traverséepackage 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+" "); } } }
Si nous insérons une instance de classe auto-définie, telle qu'une instance de classe Person, alors nous devons réécrire nous-mêmes le hashcode et les méthodes égales Les réécrire avec leurs propres champs clés. en utilisant HashSet, la méthode hashCode() sera appelée pour déterminer si la valeur du code de hachage de l' objet déjà stocké dans l'ensemble est cohérente avec la valeur du code de hachage de l'objet ajouté, si elle est incohérente, ajoutez ; directement ; S'ils sont cohérents, comparez-les avec la méthode égal. Si la méthode égal renvoie vrai, cela signifie que l'objet a été ajouté et qu'aucun nouvel objet ne sera ajouté, sinon il sera ajouté.
Analysons une autre classe d'implémentation importante de la collection Set, TreeSet
ordre naturel des éléments pour trier les éléments. , ou triés selon le Comparator fourni lors de la création de l'ensemble, en fonction du constructeur utilisé.
selon la liste triée, ou vous pouvez trier
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);//降序排列 }
Remarque : assurez-vous de définir une classe de règles de tri qui implémente l'interface Comparator, similaire à la méthode ci-dessus
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; } }
dans la méthode de comparaison
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!