JAvaコレクション1
これは私が初めてブログを书いて、javaの道を勉强してブログを书いて记录して、もし说明が间违っているならば、どうぞご指导ください!
1.1集合の進化
初期javaには3つの集合クラスしかなく,それぞれVectorクラス,Hashtableクラス,Stackクラスであった.この3つのクラスは基本的な集合機能を提供しているが,完全に満足していない.このスキームには、スレッドのセキュリティを保証するための同期メソッドであるが、パフォーマンスの損失をもたらすさまざまな状況の機能を実現するのに十分な柔軟性がありません.
しかし、Java 5以降にはもう一つの大きな変化が現れ、新しい特性は集合クラスの使用文法を変えた.
JAva 5の前に、セットに基本タイプの値を直接追加することはできません.たとえば、int値を追加するときは、対応するIntegerパッケージのインスタンスにカプセル化する必要があります.でも.Java 5が自動分解/箱詰めという特性を導入してから、対応するIntegerパッケージのインスタンスに手動でカプセル化する必要はありません.IDEによって自動的に完了し、このプロセスは表示されません.
1.2集合クラスとインタフェース
コレクションに追加されたオブジェクトは要素(element)と呼ばれ、一部のコレクションクラスでは重複要素の存在が許可され、一部のことは許可されません.ここでの繰返しとは,equals()法で2つの要素を比較し,戻り値がtrueであれば繰返し,そうでなければ逆である.
1.21 Collection
コレクションクラス階層の最上位はCollectionインタフェースであり、ほとんどのコレクションクラス実装では、このインタフェースのメソッドがよく使用されます.
集合要素にアクセスする場合は、iterator()メソッドでアクセスし、そのメソッドが返すオブジェクトがIteratorインタフェースを実現していることを示します.すなわち、iterator()メソッドはIteratorオブジェクトを返し、そのオブジェクトが提供するメソッドを使用してオブジェクトの集合を順番に読み取ることができます.
1.22 List
集合クラスの1つの特徴は集合中の要素を有意義にソートすることであり、リストインタフェースはこのソートを定義している.すなわち、リストを用いて要素の参照を実現して検索すると、戻り要素の順序は、集合中のメタセルの位置によって決定される予約可能であり、また、要素を追加するときに、要素の位置を表示または暗黙的に指定できます.次のコードを使用して説明します.
コード内の名前が小さいオブジェクトはリストの最初の位置、すなわちインデックス0を占有し、露出オブジェクトは2番目の位置を占有します.すなわち、指定した要素の位置が表示されていない場合、elementは末尾に挿入されます.逆に、特定の場所を指定したら、Demoを書いてみてください.
出力結果:
小瀚20
小miss 20
露ちゃん20
このadd()リロード呼び出しでは、最初のパラメータは、リスト内の対応するインデックス1に挿入されたStudentオブジェクトの位置を表し、この位置は元々露出オブジェクトによって占有されていたが、このコードを実行すると、新しいオブジェクトがセット内の2つの既存オブジェクトの間に挿入されるため、露出オブジェクトのインデックスは2となる.
もう1つの方法は、set()メソッドで、addと似ていますが、set()メソッドは、指定された位置の現在のオブジェクトを置き換えるために使用されます.
Listインタフェースは、未知のインデックス付きadd()メソッドを定義するだけでなく、次のコードのように、インデックスによってオブジェクトを除去するremove()メソッドも含む
これにより、インデックス位置0上のオブジェクト、すなわち、小瀚というオブジェクトが除去され、セットの最初の要素が除去され、他のオブジェクトインデックスがシフト操作によって下にシフトされる.remove()メソッドの内部原理は、remove()メソッドを呼び出すと、リスト全体を順次検索し、そのメソッドに入力されたオブジェクトとリスト内の各要素を比較します.リストに含まれる要素が多くない場合、または削除する必要があるelementの位置が前である場合、プロセスは速いですが、リストが大きい場合や後ろである場合、では、対応するオブジェクトを見つけて削除するには、複数回の遍歴と比較が必要です.remove()メソッドだけでなく、Collectionインタフェースで定義されているcontains()メソッドやindexOf()メソッドにもこの制限があります.
1.23 ArrayList
ArrayListのいくつかの特質は、以下の通りです.
(1)ArrayListに重複する要素を含めることができる
(2)ArrayListに空の値を追加可能
(3)ArrayListクラスは固有スレッドセキュリティではないため,マルチスレッド作成時にArrayListを使用する場合は,ArrayListの変更を自己責任で同期する必要がある.
これは私がjavaの第1篇のブログを学ぶので、间违った地方はどうぞよろしくお愿いします!
1.1集合の進化
初期javaには3つの集合クラスしかなく,それぞれVectorクラス,Hashtableクラス,Stackクラスであった.この3つのクラスは基本的な集合機能を提供しているが,完全に満足していない.このスキームには、スレッドのセキュリティを保証するための同期メソッドであるが、パフォーマンスの損失をもたらすさまざまな状況の機能を実現するのに十分な柔軟性がありません.
しかし、Java 5以降にはもう一つの大きな変化が現れ、新しい特性は集合クラスの使用文法を変えた.
JAva 5の前に、セットに基本タイプの値を直接追加することはできません.たとえば、int値を追加するときは、対応するIntegerパッケージのインスタンスにカプセル化する必要があります.でも.Java 5が自動分解/箱詰めという特性を導入してから、対応するIntegerパッケージのインスタンスに手動でカプセル化する必要はありません.IDEによって自動的に完了し、このプロセスは表示されません.
Map map=new HashMap();
//java1.5 , int Integer
map.put("one", new Integer(1));
//
map.put("two", 1);
1.2集合クラスとインタフェース
コレクションに追加されたオブジェクトは要素(element)と呼ばれ、一部のコレクションクラスでは重複要素の存在が許可され、一部のことは許可されません.ここでの繰返しとは,equals()法で2つの要素を比較し,戻り値がtrueであれば繰返し,そうでなければ逆である.
1.21 Collection
コレクションクラス階層の最上位はCollectionインタフェースであり、ほとんどのコレクションクラス実装では、このインタフェースのメソッドがよく使用されます.
集合要素にアクセスする場合は、iterator()メソッドでアクセスし、そのメソッドが返すオブジェクトがIteratorインタフェースを実現していることを示します.すなわち、iterator()メソッドはIteratorオブジェクトを返し、そのオブジェクトが提供するメソッドを使用してオブジェクトの集合を順番に読み取ることができます.
List list=new ArrayList();
Student student1=new Student();
student1.setStuName(" ");
student1.setStuAge(20);
Student student2=new Student();
student2.setStuName(" ");
student2.setStuAge(20);
list.add(student1);
list.add(student2);
// Iterator
Iterator it=list.iterator();
//
while(it.hasNext()){
//
Student stu=it.next();
System.out.println(stu.getStuName()+" "+stu.getStuAge());
}
1.22 List
集合クラスの1つの特徴は集合中の要素を有意義にソートすることであり、リストインタフェースはこのソートを定義している.すなわち、リストを用いて要素の参照を実現して検索すると、戻り要素の順序は、集合中のメタセルの位置によって決定される予約可能であり、また、要素を追加するときに、要素の位置を表示または暗黙的に指定できます.次のコードを使用して説明します.
ListstuList=new ArrayList();
stuList.add(new Student(123," ",22));
stuList.add(new Student(456," ",22));
コード内の名前が小さいオブジェクトはリストの最初の位置、すなわちインデックス0を占有し、露出オブジェクトは2番目の位置を占有します.すなわち、指定した要素の位置が表示されていない場合、elementは末尾に挿入されます.逆に、特定の場所を指定したら、Demoを書いてみてください.
List list=new ArrayList();
Student student1=new Student();
student1.setStuName(" ");
student1.setStuAge(20);
Student student2=new Student();
student2.setStuName(" ");
student2.setStuAge(20);
Student student3=new Student();
student3.setStuName(" miss");
student3.setStuAge(20);
list.add(student1);
list.add(student2);
list.add(1,student3);
// Iterator
Iterator it=list.iterator();
//
while(it.hasNext()){
//
Student stu=it.next();
System.out.println(stu.getStuName()+" "+stu.getStuAge());
}
出力結果:
小瀚20
小miss 20
露ちゃん20
list.add(1,student3);
このadd()リロード呼び出しでは、最初のパラメータは、リスト内の対応するインデックス1に挿入されたStudentオブジェクトの位置を表し、この位置は元々露出オブジェクトによって占有されていたが、このコードを実行すると、新しいオブジェクトがセット内の2つの既存オブジェクトの間に挿入されるため、露出オブジェクトのインデックスは2となる.
もう1つの方法は、set()メソッドで、addと似ていますが、set()メソッドは、指定された位置の現在のオブジェクトを置き換えるために使用されます.
Listインタフェースは、未知のインデックス付きadd()メソッドを定義するだけでなく、次のコードのように、インデックスによってオブジェクトを除去するremove()メソッドも含む
stuList.remove(0);
これにより、インデックス位置0上のオブジェクト、すなわち、小瀚というオブジェクトが除去され、セットの最初の要素が除去され、他のオブジェクトインデックスがシフト操作によって下にシフトされる.remove()メソッドの内部原理は、remove()メソッドを呼び出すと、リスト全体を順次検索し、そのメソッドに入力されたオブジェクトとリスト内の各要素を比較します.リストに含まれる要素が多くない場合、または削除する必要があるelementの位置が前である場合、プロセスは速いですが、リストが大きい場合や後ろである場合、では、対応するオブジェクトを見つけて削除するには、複数回の遍歴と比較が必要です.remove()メソッドだけでなく、Collectionインタフェースで定義されているcontains()メソッドやindexOf()メソッドにもこの制限があります.
1.23 ArrayList
ArrayListのいくつかの特質は、以下の通りです.
(1)ArrayListに重複する要素を含めることができる
(2)ArrayListに空の値を追加可能
(3)ArrayListクラスは固有スレッドセキュリティではないため,マルチスレッド作成時にArrayListを使用する場合は,ArrayListの変更を自己責任で同期する必要がある.
これは私がjavaの第1篇のブログを学ぶので、间违った地方はどうぞよろしくお愿いします!