目次
考え中: List コンテナ内の要素の重複を除去するにはどうすればよいでしょうか?
2. セットには、ArrayList の添え字または foreach ループによる削除の問題がありますか? なぜ
答え: set には添字がありません。すべてが添字ではありません。
3. セット内にリストの削除があるかどうかに関係なく、受信する整数はそれが基本型であるかオブジェクト型であるかを区別する必要があります (例: list.remove(2))。なぜですか?
1.機能の設定
特徴: 順序なし、繰り返しなし
考え中: List コンテナ内の要素の重複を除去するにはどうすればよいでしょうか?
@Before
public void setup() { list.add(1); list.add(2); list.add(3); list.add(3); list.add(4); list.add(5); list.add(3); list.add(4); //list.add(3); }//去重复
@Test
public void test05() { HashSet <整数> ll = new HashSet <整数>(リスト); ll. forEach (t->System.out.println(t)); }
2. トラバース: foreach、イテレータ
//トラバーサルメソッド
@Test
public void test06() { Set <Integer> set = new HashSet <>(); //Liskov 置換原則 set.add(3); set.add(2); set.add(1); //foreach for (Integer i : set) { System.out.println(i); } //イテレータ Iterator <Integer> it = set.iterator() ; while( it.hasNext) () ) { 整数 n = it.next(); System.out.println(n); } }
3. 容量拡張:初期容量16、負荷率0.75、拡張増分1回
性能パラメータ:初期容量、負荷率
デフォルト:初期容量16、負荷率0.75
例: new HashSet<>(20, 0.5f);
4. ハッシュセット
- 一意の要素を保存し、オブジェクトのハッシュコードに基づいて要素が存在するかどうかを判断するために null 値を許可します
- HashMap による支援
- 挿入順序は保持されません
- スレッドセーフではありません
5. 思考
1. ArrayList コレクションの重複を排除する方法
@Before
public void setup() { list.add(1); list.add(2); list.add(3); list.add(3); list.add(4); list.add(5); list.add(3); list.add(4); //list.add(3); }//去重复
@Test
public void test05() { HashSet <整数> ll = new ArrayList <整数> (new HashSet <整数>(リスト)); ll. forEach (t->System.out.println(t)); }
2. セットには、ArrayList の添え字または foreach ループによる削除の問題がありますか? なぜ
答え:添字をすべて no に設定します
3. セット内にリストの削除があるかどうかに関係なく、受信する整数はそれが基本型であるかオブジェクト型であるかを区別する必要があります (例: list.remove(2))。なぜですか?
答え:基本的な整数があります
6. ツリーセット
- 重複要素のない順序付きセットです
- この機能は、順序付けされた Set コレクション、自然な並べ替え、または提供された Comparator に従った並べ替えを提供することです。
- TreeSet は TreeMap に基づいて実装されます
例:
//TreeMap
@Test
public void test07() { //コールバック関数 TreeSet<Integer> ts = new TreeSet<>( //匿名クラス new Comparator<Integer>() { @Override public int Compare(Integer o1, Integer o2) { //降順 return o2-o1; } } );
//テストデータ
ts.add(1);
ts.add(3);
ts.add(4);
ts.add(5);
ts.add(6);
ts.add(8);
ts.add(2);//1. デフォルトの自然ソート
for(Integer e: ts) { System.out.println(e); } }
カスタムコンパレータ
① コンパレータをコンストラクタに渡す
TreeSet<Integer> tset = new TreeSet<Integer>(new Comparator<Integer>() { @Override public int Compare(Integer o1, Integer o2) { // TODO 自動生成されたメソッド スタブ return o2 - o1; } });
②ソートインターフェースの実現
public class Student はComparable<Student> { private Integer sid;を実装します。 プライベート文字列名。 プライベートの年齢。 //构造関数数,getter,setter,hashCode,equals 等 メソッド省略 @Override public int CompareTo(Student o) { // TODO 自動生成されたメソッド スタブ return o.getAge() - this.getAge(); }
}