コンテナ(2)
Six。イテレータ
イテレータを使用してコンテナ要素をトラバースします(リスト/セット/マップ)
イテレータは、コンテナをトラバースするための統一された方法を提供します
リストをトラバースするイテレータ
public static void testIteartorList() {
List<String> list=new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
Iterator<String> iter=list.iterator();
while(iter.hasNext()) {
//看作指针移动
String temp=iter.next();
System.out.println(temp);
}
}
イテレータはセットをトラバースします
public static void testIteartorSet() {
Set<String> set=new HashSet<>();
set.add("aa");
set.add("bb");
set.add("cc");
Iterator<String> iter=set.iterator();
while(iter.hasNext()) {
//看作指针移动
String temp=iter.next();
System.out.println(temp);
}
}
イテレータはマップをトラバースします(1)
1.キーと値がマップに保存されているノードで、最初にmap.entrySet();を介してセット(ss)ノードを取得します
。2。次にセットをトラバースします。
public static void testIteartorMap() {
Map<Integer,String> map=new HashMap<>();
map.put(100,"aa");
map.put(200,"bb");
map.put(300,"cc");
//获得结点
Set<Entry<Integer,String>> ss=map.entrySet(); //import java.util.Map.Entry;
Iterator<Entry<Integer, String>> iter=ss.iterator();
while(iter.hasNext()) {
Entry<Integer, String> temp=iter.next();//得到的是结点
System.out.println(temp.getKey()+"```"+temp.getValue());
}
}
イテレータはマップをトラバースします(2)
public static void testIteartorMap() {
Map<Integer,String> map=new HashMap<>();
map.put(100,"aa");
map.put(200,"bb");
map.put(300,"cc");
//获得键的集合
Set<Integer>keySet=map.keySet(); //import java.util.Map.Entry;
Iterator<Integer> iter=keySet.iterator();
while(iter.hasNext()) {
Integer key=iter.next();
System.out.println(key+"```"+map.get(key));
}
}
コレクションをトラバースする方法の要約
1.リストをトラバースします
方法1:
通常のforループ
for(int i=0;i<list.size();i++){
//list为集合的对象名
String temp = (String)list.get(i);
System.out.println(temp);
}
方法2:
forループを拡張します(ジェネリックを使用してください!)
for (String temp : list) {
System.out.println(temp);
}
方法3:
イテレータを使用する(1)
Iterator<String> iter=list.iterator();
while(iter.hasNext()) {
//看作指针移动
String temp=iter.next();
System.out.println(temp);
}
/同理
for(Iterator iter= list.iterator();iter.hasNext();){
String temp = (String)iter.next();
System.out.println(temp);
}
方法4:
イテレータを使用する(2)
Iterator iter =list.iterator();
while(iter.hasNext()){
Object obj = iter.next();
iter.remove();//如果要遍历时,删除集合中的元素,建议使用这种方式!
System.out.println(obj);
}
2.セットをトラバースします
方法1:
forループを拡張する
for(String temp:set){
System.out.println(temp);
}
方法2:
イテレータを使用する
Iterator<String> iter=set.iterator();
while(iter.hasNext()) {
//看作指针移动
String temp=iter.next();
System.out.println(temp);
}
/同理
for(Iterator iter = set.iterator();iter.hasNext();){
String temp = (String)iter.next();
System.out.println(temp);
}
3.マップをトラバースします
方法1:
キーに従って値を取得する
Map<Integer, Man> maps = new HashMap<Integer, Man>();
//获得键的集合
Set<Integer>keySet=map.keySet(); //import java.util.Map.Entry;
for(Integer id : keySet){
System.out.println(maps.get(id).name);
}
/
Iterator<Integer> iter=keySet.iterator();
while(iter.hasNext()) {
Integer key=iter.next();
System.out.println(key+"```"+map.get(key));
}
}
方法2:
entrySetを使用する
//获得结点
//import java.util.Map.Entry;
Set<Entry<Integer,String>> ss=map.entrySet();
//指结点的迭代器
Iterator<Entry<Integer, String>> iter=ss.iterator();
while(iter.hasNext()) {
Entry<Integer, String> temp=iter.next();//得到的是结点
System.out.println(temp.getKey()+"```"+temp.getValue());
}
Set<Entry<Integer, Man>> ss = maps.entrySet();
for (Iterator iterator = ss.iterator(); iterator.hasNext();) {
Entry e = (Entry) iterator.next();
System.out.println(e.getKey()+"--"+e.getValue());
}
セブン。コレクションツール
java.util.Collectionsクラスは、Set、List、およびMapの要素をソート、入力、および検索するための補助メソッドを提供します。
これは補助クラスであり、コレクションインターフェイスではありません
コレクションツールの一般的な方法
事業 | 値 |
---|---|
void sort(List) | リストコンテナ内の要素を並べ替えます。並べ替えのルールは昇順で並べ替えることです |
ボイドシャッフル(リスト) | リストコンテナ内の要素をランダムに配置します |
void reverse(List) | リストコンテナ内の要素の逆配置 |
void fill(List、Object) | リストコンテナ全体を特定のオブジェクトで書き換えます |
int binarySearch(List、Object) | シーケンシャルリストコンテナの場合、バイナリ検索メソッドを使用して特定のオブジェクトを検索します。 |
例
public class TestCollections {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
for(int i=0;i<10;i++) {
list.add("dj"+i);
}
System.out.println(list);
//随机排列List中的元素
Collections.shuffle(list);
System.out.println(list);
//逆序排列List
Collections.reverse(list);
System.out.println(list);
//按照递增顺序排列,自定义的的类用Comparable接口。
Collections.sort(list);
System.out.println(list);
//二分法查找(折半查找),返回索引值
System.out.println(Collections.binarySearch(list, "dj9"));
}
}
まとめ
1.コレクションは、オブジェクトのグループを表します。これは、集中して収集することを意味し、データを収集することを意味します。
2.コレクションインターフェイスの2つのサブインターフェイス:
1)リスト内の要素は順番に並んでおり、繰り返すことができます。一般的に使用される実装クラスは、ArrayList、LinkedList、およびvectorです。
ØArrayListの機能:高いクエリ効率、低い追加と削除の効率、および安全でないスレッド。
ØLinkedListの機能:クエリ効率の低さ、追加と削除の効率の高さ、安全でないスレッド。
Øベクトル機能:スレッドセーフ、低効率、その他の機能はArrayListに似ています。
2)セット内の要素には順序がなく、繰り返すことはできません。一般的に使用される実装クラスは、HashSetとTreeSetです。
ØHashSetの機能:ハッシュアルゴリズムを採用して、高いクエリ効率と追加および削除の効率を実現します。
ØTreeSetの機能:保存されている要素は内部で並べ替える必要があります。したがって、対応するクラスはComparableインターフェイスを実装する必要があります。このようにして、compareTo()メソッドに従ってオブジェクト間のサイズを比較し、内部ソートを実行できます。
3. Mapインターフェースを実装するクラスは、キーと値のペアを格納するために使用されます。Mapインターフェースの実装クラスには、HashMapとTreeMapが含まれます。Mapクラスに格納されているキーと値のペアはキーによって識別されるため、キー値を繰り返すことはできません。
4. Iteratorオブジェクトはイテレータと呼ばれ、コンテナ内の要素のトラバーサル操作を便利に実現するために使用されます。
5. java.util.Collectionsクラスは、Set、List、およびMapを操作するためのツールとメソッドを提供します。
6.次の状況では、equals / hashCodeメソッドを書き直す必要がある場合があります
。1)カスタムオブジェクトを処理のためにHashSetに配置します。
2)カスタマイズしたオブジェクトをHashMapのキーとして処理する必要があります。
3)カスタムオブジェクトをコレクションコンテナに配置した後、removeやcontainsなどのメソッドを呼び出すことができます。
7.JDK1.5の後にジェネリックが追加されました。ジェネリックスの利点:
1)コレクションにデータを追加するときにデータのセキュリティを確保します。
2)コレクション要素をトラバースするときにキャストは必要ありません。