[学習] Javaのセットコレクション、コレクションツール

セットインタフェースが収集インターフェース延び
セットインターフェイス機能を:
1.重複記憶素子が許可していない
2インデックス付けされない、いかなる方法を介して、通常のループのために使用することはできませんインデックス付け
HashSetのインタフェースセットを実装し
HashSetの特徴:
記憶1.許容繰り返し要素
2.ないインデクシング、インデックスのない方法は、通常のをループするために使用されないされていない
3つの要素の記憶および順序が矛盾抽出要素であってもよい、非順序集合である
4.底構造は、ハッシュテーブルです(クエリの速度)が非常に高速であります

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Demo01Set {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<>();
        // 使用add方法往集合中添加元素
        set.add(1);
        set.add(2);
        set.add(3);
        set.add(4);
        Iterator<Integer> it = set.iterator();
        while (it.hasNext()) {
            Integer n = it.next();
            System.out.println(n);
        }

        for (Integer n : set) {
            System.out.println(n);
        }
    }
}

ハッシュ値:小数の整数であるオブジェクトのアドレス値は、ランダム方式によって、である(与えられ、論理アドレスであり、アドレスは物理アドレスデータを取得するためにシミュレートされたが実際に記憶されていない
オブジェクト・クラスの方法、得ることができますオブジェクトのハッシュ値
INTのhasCode()このオブジェクトのハッシュコード値を返し
hasCodeソース方法。

public native int hashCode();
native:代表该方法调用的是本地操作系统的方法

HashSetのストアは、カスタム型要素
セットコレクションは、ユニークな要素を保持します。
記憶素子(文字列、整数、... Student.Person)は、hasCode方法と等しい方法を書き換える必要があります
要件:
彼の年齢と同じ名前で、同じ人として扱わは、一度だけ保存することができます
ここに画像を挿入説明

import java.util.Objects;

class Person {
    private String name;
    private int age;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age &&
                Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
public class Demo04HashSetSavePerson {
    public static void main(String[] args) {
        HashSet<Person> set = new HashSet<>();
        Person p1 = new Person("小仙女",19);
        Person p2 = new Person("小美女",18);
        Person p3 = new Person("小美女",18);

        System.out.println(p1.hashCode()); // 722193131
        System.out.println(p2.hashCode()); // 734175839
        System.out.println(p3.hashCode()); // 734175839

        System.out.println(p2==p3); // false
        System.out.println(p2.equals(p3)); // true
        set.add(p1);
        set.add(p2);
        set.add(p3);
        System.out.println(set); //[Person{name='小仙女', age=19}, Person{name='小美女', age=18}]
    }
}

機能のLinkedHashSetのセット:
最下層は、ハッシュテーブルである(配列+リスト/ブラックツリー)+リスト:マルチ鎖(シーケンシャル記録記憶素子)、秩序ある要素を確実にします

可変パラメータ:特性が現れる新しいJDK1.5の後
に設けられ使用:
プロセスパラメータリストのデータ型が決定された場合が、パラメータの不確実性の数、可変パラメータを使用することができる
フォーマットを使用:定義するときに使用されているメソッド
修饰符 返回值类型 方法名(数据类型...变量名){}
可変パラメータを原理:
可変パラメータは、底配列で渡されるパラメータの数に応じては、これらのパラメータを格納するために、異なる長さの配列を作成する
パラメータの数が経過し、そして0(無送信)、1,2-複数であってもよいです、...
注可変パラメータ:
引数リスト1.メソッドは、パラメータ1つの変数のみ
2のメソッドの最後には、変数のパラメータは、パラメータリストで記述する必要があり、複数のパラメータを持っている場合

public class Demo01VarArgs {
    public static void main(String[] args) {
        int i = add(12,12);
        System.out.println(i);
    }
    /*
    定义计算(0-n)整数和的方法
    已知:计算整数的和,数据类型已经确定int
    但是参数的个数不确定,不知道要计算几个整数的和,就可以使用可变参数
     */
    public static int add(int...arr){
        //System.out.println(arr);
        int sum = 0;
        for (int i : arr) {
            sum =  sum + i;
        }
        return sum;
    }
//    public static int add(int a,int b){
//        return a+b;
//    }
}

コレクションコレクション操作のためのツールのコレクションです。方法の一部として、
-public static <T> boolean addAll(Collection<T>c,T...elements):往集合中添加一些元素
-public static void shuffle(List<?> list) 打乱集合顺序

公共の静的な無効ソート(一覧リスト)セットをランク付けするために、デフォルトは昇順です
注:
ソート使用を前提に
あなたはComparableを実装する必要があり、内部に保存された要素の集合を命じている、方法インタフェースルールがのcompareToを書き換える命じ定義します

同等の照合インターフェイス:
自分の(この) -パラメータ:昇順

公共の静的な無効ソート(一覧リスト、コンパレータ<スーパーT?>):コレクションの要素が指定されたルールに従ってソート

コンパレータと同等の違い
匹敵する:自分の(この)、その他(パラメータ)を比較すると、彼らは、Comparableインタフェースを実装し、比較のcompareToメソッドのルール書き換える必要がある
2を比較するために、サードパーティ製の審判と同等のものを見つける:コンパレータを

:コンパレータは、ルール
、O1-O2の上昇下降、およびその逆

公開された19元の記事 ウォン称賛20 ビュー712

おすすめ

転載: blog.csdn.net/sy140823/article/details/104907990