Java SE 046 Iterator、TreeSet、およびComparatorの詳細な分析

(1)人が諦めない限り、全世界があなたを諦めない
(2)私は大いに役立つために生まれる(3)
学ぶことの苦しみに耐えられないのなら、人生の苦しみに耐えなければならない。深い理解。
(4)難しいことをすることで得なければなりません
5)精神は本当の刃です。
(6)相手を2回、心の中で初めて征服します。
(7)書くのは本当に簡単ではありません。好きな場合や何か持っている場合好き+フォローまたはお気に入りを忘れないでください〜

Java SE 046 Iterator、TreeSet、およびComparatorの詳細な分析

1.反復関数を使用する

反復関数を使用してコレクションにアクセスする前に、反復関数を取得する必要があります。各Collectionクラスは、コレクションの先頭に反復関数を返すiterator()関数を提供します。この反復関数オブジェクトを使用すると、クラスセット内のすべての要素に一度に1つの要素にアクセスできます。通常、反復関数はクラスターのコンテンツをループするために使用され、手順は次のとおりです。
(1)クラスターのiterator()メソッドを呼び出して、クラスターヘッダーの反復関数を取得します。
(2)hashNext()メソッドを呼び出すループを確立します。hashNext()がtrueを返す限り、ループを繰り返します。
(3)ループ内では、next()メソッドを呼び出して各要素を取得します。

package com.javase.hashset;

import java.util.HashSet;
import java.util.Iterator;

public class SetTest4 {
    
    
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
    
    
		HashSet set = new HashSet();
		set.add("a");
		set.add("b");
		set.add("c");
		set.add("d");
		set.add("e");
		
		for(Iterator iter = set.iterator(); iter.hasNext();){
    
    
			String value = (String)iter.next();
			System.out.println(value);
		}
	}
}

2.TreeSet

(1)自然分類(分類規則を指定しない)

package com.javase.hashset;

import java.util.TreeSet;

public class TreeSetTest {
    
    

	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
    
    
		TreeSet set = new TreeSet();
		set.add("c");
		set.add("e");
		set.add("b");
		set.add("d");
		set.add("a");
		set.add("f");
		System.out.println(set);
	}

}

(2)TreeSet addメソッドの問題。
指定されたオブジェクトを現在のコレクションにすでに存在するオブジェクトと比較できない場合、ClassCastExceptionがスローされます。

package com.javase.hashset;

import java.util.TreeSet;

public class TreeSetTest2 {
    
    

	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
    
    
		TreeSet set = new TreeSet();
		Person p1 = new Person(10);
		Person p2 = new Person(20);
		Person p3 = new Person(30);
		Person p4 = new Person(40);
		Person p5 = new Person(50);
		
		set.add(p1);
		set.add(p2);
		set.add(p3);
		set.add(p4);
		set.add(p5);
		
		System.out.println(set);
	}
	
}

class Person{
    
    
	
	int score;
	
	public Person(int score){
    
    
		this.score = score;
	}
	
	@Override
	public String toString() {
    
    
		return String.valueOf(score);
	}
}

人のオブジェクトは比較できません

(3)オブジェクトをTreeSetに配置し、オブジェクトを比較できるようにするには、オブジェクト自体にいわゆる自然な順序がないという条件で、一連の並べ替えルールを指定する必要があります。つまり、カスタムの場合タイプはソートルールを明確に指定する必要があります。
比較できません

(3)オブジェクトをTreeSetに配置し、オブジェクトを比較できるようにするには、オブジェクト自体にいわゆる自然な順序がないという条件で、一連の並べ替えルールを指定する必要があります。つまり、カスタムの場合タイプは、ソート規則を明確に指定する必要があります。

おすすめ

転載: blog.csdn.net/xiogjie_67/article/details/108540800