이 글은 주로 Java Set 순회 및 구현 클래스 비교 관련 정보를 소개합니다. 필요한 친구는
Java Set 순회 및 구현 클래스 비교
Java의 Set 컬렉션은 반복되는 요소를 포함하지 않는 컬렉션입니다. 먼저 순회 방법을 살펴보겠습니다.package 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+" "); } } }
Person 클래스 인스턴스와 같은 자체 정의된 클래스 인스턴스를 넣으면 해시 코드와 같음 메서드를 직접 다시 작성해야 합니다. 자체 키 필드로 다시 작성해야 합니다. , hashCode() 메소드가 호출되어 이미 세트에 저장된 객체 의 해시 코드 값이 추가된 객체의 해시 코드 값과 일치하는지 확인합니다. 그렇지 않으면 직접 추가합니다. 일관성이 있으면 equals 메소드를 비교하십시오. equals 메소드가 true를 반환하면 객체가 추가되었으며 새 객체가 추가되지 않음을 의미합니다. 그렇지 않으면 객체가 추가됩니다.
Set 컬렉션의 또 다른 중요한 구현 클래스인 TreeSet을 분석해 보겠습니다.
자연 순서를 사용하여 요소를 정렬합니다. . 또는 사용된 생성자에 따라 세트가 생성될 때 제공된 비교기에 따라 정렬됩니다.
목록에 따라 을 표시하거나 지정된 규칙에 따라
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);//降序排列 }
참고: 위의 방법과 유사하게 Comparator인터페이스를 구현하는 정렬 규칙 클래스를 정의해야 합니다
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; } }
만 변경하면 됩니다.
위 내용은 Java Set 컬렉션 탐색 및 구현 클래스 비교(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!