0(12)からのJava(コレクション)

セット

  • Javaのように設定コンテナは、オブジェクトは、コンテナ内に動的参照の複数であってもよいです。
  • Javaコレクションは、2つのシステムと地図コレクションに分けることができます

コレクションインタフェース

ここに画像を挿入説明

  • コレクションインタフェースインタフェースリストは、親である、との両方のセットセットを動作させるために、このインタフェースで定義された一連のキュー・インタフェース・メソッドは、またリストやキューのセットを操作するために使用されます。
  • コレクションインタフェース:単一のデータ・セットは、オブジェクトのアクセス方法のセットを定義
    リスト:要素は、反復可能なセットの注文
    要素障害、非反復セット:セット

Collectionインタフェースのメソッド

  1. 添加
    追加(オブジェクトobj)
    のaddAll(コレクションcoll)
  2. 能動素子の数を取得
    int型のサイズを()
  3. 空のコレクション
    のボイドをクリア()
  4. それが空集合であるかどうか
    のisEmpty(ブール値)
  5. 要素の含有
    方法は要素が同じオブジェクトであるか否かによって判断される等しい:ブール(オブジェクトOBJ)が含まれ
    、また要素を比較する方法に等しく呼び出し:のcontainsAll(コレクションc)のブール。1つの比較によって要素1の2セットを取ります。
  6. 削除
    ブール削除(オブジェクトobj):メソッドと等しいか否かで判断された要素の要素を除去することです。最初の要素が見つかりました。削除します
    ブールのremoveAll(コレクションcollを):現在のコレクションの差集合を取ります
  7. 二組の交差点取る
    ブールのretainAll(コレクションcを):現在のコレクションの交差点の存在の結果は、cには影響を与えません。
  8. セットが等しい
    ブール等しい(オブジェクトOBJ)
  9. オブジェクトの配列に変換する
    )([]のtoArrayオブジェクト
  10. オブジェクトのハッシュ値のコレクションを取得します
    のhashCode()を
  11. 横断
    イテレータは():セットを横断するために使用されるイテレータオブジェクトを返します

イテレータイテレータインターフェース

  • コレクション要素を通して使用Iteratorインターフェイス
    イテレータと呼ばれるイテレータ(1つのデザインモード)、コレクションのコレクションを横断するための主要要素をオブジェクト。
  • イテレータはコレクションを、反復子自体は、オブジェクトをインストールするための機能を提供していません。あなたはイテレータオブジェクトを作成する必要がある場合は、反復のセットがなければなりません。
  • 各イテレータ()メソッドを呼び出して、オブジェクトのコレクションは、すべてのデフォルトのカーソルのコレクションの最初の要素の前に、新しいイテレータオブジェクトを取得します。
/hasNext():判断是否还有下一个元素
while(iterator.hasNext()){
//next():①指针下移 ②将下移以后集合位置上的元素返回
System.out.println(iterator.next());
}
Iterator iter = coll.iterator();//回到起点
while(iter.hasNext()){
    Object obj = iter.next();
    if(obj.equals("Tom")){
    iter.remove();
}

リストインターフェース:サブインタフェースコレクションの一つ

  • データを格納するために使用され、アレイ内のJavaの限界を考えると、我々は通常、別の配列リストを使用します
  • 注文したコレクションクラス内の要素のリスト、および繰り返すことができるが、各要素の集合は、そのシーケンスインデックスに対応しています。
  • 容器内での位置を示す整数にリストコンテナ要素の対応は、容器は、要素の数に応じてアクセスすることができます。
Listインタフェースのメソッド
  1. ボイド追加(INTインデックス、オブジェクトELE):要素は、インデックス位置ELEに挿入され
  2. ブールのaddAll(int型のインデックス、コレクションeles ): で開始位置のインデックスeles
    のすべての要素を追加することが来ます
  3. オブジェクトのget(int index)指定さ:指定したインデックス位置にある要素を取得します。
  4. int型のindexOf(Object obj)指定されたオブジェクト:コレクション内のOBJの最初に出現する位置を返します
  5. int型のlastIndexOf(Object obj)指定されたオブジェクト:objが最後の位置にある現在のコレクションが表示されますを返します。
  6. オブジェクト削除(int index)指定さ:指定された位置のインデックス要素を削除し、この要素を返します
  7. オブジェクトセット(int型のインデックス、オブジェクトELE):ELEに指定したインデックスにある要素を設定します
  8. リストのsubList(int型fromIndexの、INTたtoIndex):fromIndexの位置からのサブセットに戻りたtoIndex
リスト1つの実装クラス:ArrayListの
  • ArrayListクラスは、Listインタフェースの典型的な実装、メイン達成カテゴリです
  • 本質的に、ArrayListオブジェクト参照は、「可変長」アレイであります
  • Arrays.asList(...)メソッドは、リスト、どちらのArrayListのインスタンスのセットを返し、Vectorインスタンスではありません。Arrays.asList(...)リストの固定長のセットの値を返します。
2のリストの実装クラス:LinkedListの
  • 要素の挿入や削除を頻繁に操作するためには、LinkedListのクラスを使用することが推奨され、高効率
  • LinkedListの:二重リンクリスト、配列が、ノードは最初と最後のタイプの定義を宣言することができませんでした、最初と最後の要素を記録するために使用されます。一方、データのLinkedListの基本構造として内部ノードのクラス定義は、保存されました。データを保存するノードの追加だけでなく、2つの変数を定義:
    フロント変数PREVの記録素子の位置は、
    次の可変要素の位置を記録します
    ここに画像を挿入説明
3一覧の実装クラス:ベクトル
  • ベクターは、古いコレクション、JDK1.0があります。操作のほとんどとArrayListの同じ、違いは、ベクターがスレッドセーフであるということです。
  • 様々なリストで、好ましくはArrayListのデフォルトの選択肢として。挿入されると、頻繁に使用するのLinkedListを削除し、ベクトルは常に遅くArrayListをよりなので、使用しないようにしてみてください。

二つのサブインタフェースのコレクション:セット・インタフェース

  • Set接口是Collection的子接口, set接口没有提供额外的方法
  • Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个Set 集合中,则添加操作失败。
  • Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals() 方法
Set实现类之一: HashSet
  • HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时都使用这个实现类。
  • HashSet 按 Hash 算法来存储集合中的元素,因此具有很好的存取、查找、删除性能。
  • HashSet 具有以下特点:
    不能保证元素的排列顺序
    HashSet 不是线程安全的
    集合元素可以是 null\
  • HashSet 集合判断两个元素相等的标准: 两个对象通过 hashCode() 方法比较相等,并且两个对象的 equals() 方法返回值也相等。
Set实现类之二: LinkedHashSet
  • LinkedHashSet 是 HashSet 的子类
  • LinkedHashSet 根据元素的 hashCode 值来决定元素的存储位置,但它同时使用双向链表维护元素的次序,这使得元素看起来是以插入顺序保存的。
  • LinkedHashSet插入性能略低于 HashSet, 但在迭代访问 Set 里的全部元素时有很好的性能。
  • LinkedHashSet 不允许集合元素重复。
Set实现类之三: TreeSet
  • TreeSet 是 SortedSet 接口的实现类, TreeSet 可以确保集合元素处于排序状态。
  • TreeSet底层使用红黑树结构存储数据
    ここに画像を挿入説明

Map接口

ここに画像を挿入説明

  • Map与Collection并列存在。用于保存具有映射关系的数据:key-value
    ( Map 中的 key 和 value 都可以是任何引用类型的数据
  • Map 中的 key 用Set来存放, 不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()和equals()方法
  • 常用String类作为Map的“键”
  • key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到唯一的、确定的 value
Map map = new HashMap();
//map.put(..,..)省略
System.out.println("map的所有key:");
Set keys = map.keySet();// HashSet
for (Object key : keys) {
    System.out.println(key + "->" + map.get(key));
}
System.out.println("map的所有的value: ");
Collection values = map.values();
Iterator iter = values.iterator();
while (iter.hasNext()) {
    System.out.println(iter.next());
}
System.out.println("map所有的映射关系: ");
// 映射关系的类型是Map.Entry类型,它是Map接口的内部接口
Set mappings = map.entrySet();
for (Object mapping : mappings) {
    Map.Entry entry = (Map.Entry) mapping;
    System.out.println("key是: " + entry.getKey() + ", value是: " + entry.getValue());
}
Map实现类之一: HashMap
  • HashMap是 Map 接口使用频率最高的实现类。
  • 允许使用null键和null值,与HashSet一样,不保证映射的顺序。
  • 所有的key构成的集合是Set:无序的、不可重复的。所以, key所在的类要重写:equals()和hashCode()
  • 所有的value构成的集合是Collection:无序的、可以重复的。所以, value所在的类要重写: equals()
    一个key-value构成一个entry
  • 所有的entry构成的集合是Set:无序的、不可重复的
  • HashMap 判断两个 key 相等的标准是:两个 key 通过 equals() 方法返回 true,hashCode 值也相等。
  • HashMap 判断两个 value相等的标准是:两个 value 通过 equals() 方法返回 true
Map实现类之二: LinkedHashMap
  • LinkedHashMap 是 HashMap 的子类
  • 在HashMap存储结构的基础上,使用了一对双向链表来记录添加元素的顺序
  • 与LinkedHashSet类似, LinkedHashMap 可以维护 Map 的迭代顺序:迭代顺序与 Key-Value 对的插入顺序一致
static class Node<K,V> implements Map.Entry<K,V> {
    final int hash;
    final K key;
    V value;
    Node<K,V> next;
}
static class Entry<K,V> extends HashMap.Node<K,V> {
    Entry<K,V> before, after;
    Entry(int hash, K key, V value, Node<K,V> next) {
        super(hash, key, value, next);
    }
}
Map实现类之三: TreeMap
  • TreeMap存储 Key-Value 对时, 需要根据 key-value 对进行排序。
  • TreeMap 可以保证所有的 Key-Value 对处于有序状态。
  • TreeSet底层使用红黑树结构存储数据
Map实现类之四: Hashtable
  • Hashtable是线程安全的。
  • 同じ機能を実現するためのHashtableとHashMapのと同じ原理。基本構造は、多くの場合、相互運用することができ、クエリの速度をハッシュテーブルを使用しています。
  • HashMapのとは異なり、ハッシュテーブルは、キーと値としてnullを許可しません
  • HashMapのと同様に、ハッシュテーブル内のキーと値のペアの順序を保証することはできません
  • HashMapのと一致二つの等しいHashtableのキー、二つの等しい価値基準を、分析します。
プロパティ:5つのカテゴリーのMap実装
  • ハッシュテーブルのプロパティクラスは、プロパティを処理するために対象文書のサブクラスであります
  • 文書キーの性質上では、値が文字列型であるので、キーと値のプロパティは、文字列タイプです
  • データ、推奨のsetProperty(文字列キー、文字列値)とのgetPropertyメソッドにアクセスする(文字列キー)方法
Properties pros = new Properties();
pros.load(new FileInputStream("jdbc.properties"));
String user = pros.getProperty("user");
System.out.println(user)
公開された31元の記事 ウォンの賞賛0 ビュー220

おすすめ

転載: blog.csdn.net/nimwwda/article/details/104038818