Javaのジェネリックを学習する前に、理解のコレクションが、時間の経過とともに、ジェネリックとコレクションは、いくつかの簡単な認知を漠然と持ってきた、我々はおよそ書き込みを統合しようとする、私はあなたがギャングを理解するためにポイントすることを願って不適切な、非常に感謝!!!
Java言語では、コレクションが2つの系統に分かれています:コレクションと地図コレクション、これら2つのシステムが最大の違いである--Collection分別収集地図コレクションが複列であるということです
二つのインターフェース--listとセット実装クラスの多くは、Listインタフェースであり、分別収集の下にあり、我々はリストと設定時間が彼らの実装クラスがインスタンス化されている使用し、より一般的な実装クラスは、ArrayListにする必要がありますLinkedListのコレクションとコレクション
これらの2つのコレクションの違いについて簡単に説明は、ArrayListのコレクションは、基になる配列によって行われ、配列の実現はによって特徴付けられる:速い検索、低速の追加や削除、LinkedListのコレクションは、リンクされたリストによって達成され、機能のリストは、高速、低速の表情追加および削除されています。
このセットは共通して二つのものです:どちらの実装は、オーダーのその保存と検索が同じであることを保証することができます。
パブリック クラスListDemo01 { / * 特性設定リスト: 順序:要素と同一の抽出の格納順序が 繰り返されてもよい。記憶素子が繰り返されてもよい * / パブリック 静的 ボイドメイン(文字列[]引数){ // コレクションオブジェクトの作成 <リストを文字列>一覧= 新しい新しいのArrayList <文字列> (); // 要素を追加します ( "こんにちは" List.addを); List.add( "Javaの" ); List.add( "言葉" ); List.add( "言葉" ) ; // 出力設定オブジェクト // のSystem.out.println(一覧); //トラバースする方法のセットリストイテレータ イテレータの<string>は= list.iterator(); ながら(it.hasNextを()) { System.out.printlnは(it.next()); } } }
結果はこれです:
より一般的に使用されるクラスを実装インタフェースの設定とHashSetのはLinkedHashSetのあること
私たちは、データセットのコレクションが要素を繰り返して保存されていないことを、反復することができないようにすることであるハッシュテーブルを備え、セットのコレクションはハッシュテーブルを介して達成され、名前から見ることができます。データを保存するためにハッシュすることによって、我々が知っているストレージHanshを、理解することによって、我々は、データが順序で読み出され、注文データが矛盾しているに入金します。これはまた、インタフェースとSet Listインタフェースとの間の差です。
インポート;とはjava.util.HashSet インポートjava.util.Set; / * セット機能のセットです。 コレクションは重複要素を含んでいない ではないインデックス付きメソッドは、通常のループ反復するために使用することはできません * / パブリック クラスSetDemo { 公共の 静的な 無効メイン(文字列[] args)を{ // コレクションオブジェクトを作成する セット<文字列> SET = 新しい新しい HashSetの<文字列> (); // 要素を追加するには ( "こんにちは" set.add ); (set.add "世界" ); セット。追加( "Javaの" ); // 反復 のための(文字列S:SET) { のSystem.out.println(S); } } }
結果はこれです:
すべての例外はありますが、実装クラスが保証される挿入順序があるが、セットコレクション内の検索順序と一致しているそれがない理由は、実装クラスは、LinkedHashSetのでしょうか?
その底部がリンクリストハッシュを添加することによって達成され、ハッシュはデータの再現性を保証しない、検索されたリストは、データの整合性が挿入さを確保するため
import java.util.LinkedHashSet; /* LinkedHashSet是由哈希表跟链表来实现Set集合的,又因为Set是不能重复的和存储读取不一致的,所以,这个是对它的一个改进,不能存重复值,是由Hash表来保证的,同时又能进行 存储和读取一致,这是由链表来保证的 */ public class LinkedHashSetDemo { public static void main(String[] args) { //创建集合对象 LinkedHashSet<String> LinkHashSet = new LinkedHashSet<String>(); //添加元素 LinkHashSet.add("hello"); LinkHashSet.add("word"); LinkHashSet.add("Java"); //遍历结合 for (String s : LinkHashSet) { System.out.println(s); } } }
运行结果:
这就是我对于单列集合的理解,总结一下就是:Collection下有List和Set接口,这俩接口下最常用的实现类是ArrayList集合和LinkedList、HashSet和LinkedHashSet,其中这里面list的两个实现类中ArrayList是数组实现,便于查找,LinkedList用链表实现,便于插入删除。Set的两个实现类中HashSet是通过Hash表来实现的,能保证数据的不重复性,但是不能保证数据插入检索顺序一致。LinkedHashSet既能保证数据不重复,又能保证插入检索一致。