java:コレクション

前書き

コレクションはデータのグループであり、複数の要素を格納するデータ構造です。
コレクションのストレージ構造は、次の2つのタイプに分けられます。

  • シーケンス構造
  • チェーン構造

シーケンシャルストレージ

コレクション内の要素を特定の領域に順番に配置することをシーケンシャル構造と呼び、メモリに割り当てられたスペースは連続しています。
特徴:高いアクセス効率、低い挿入または削除効率。
ここに画像の説明を挿入します

チェーン収納

メモリに割り当てられたスペースは不連続で、次のように分割できます。

  • 一方向チェーン収納
  • 双方向チェーンストレージ

特徴:高い挿入および削除効率、低いアクセス効率
ここに画像の説明を挿入します
ここに画像の説明を挿入します

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

コレクション関連のAPIはjava.utilパッケージに含まれています
ここに画像の説明を挿入します

コレクション

これはインターフェースであり、他のインターフェースから継承される主なものはリストとセットです。

リスト

配列リスト

import java.util.ArrayList;

public class RunoobTest {
    
    
    public static void main(String[] args) {
    
    
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        // 访问元素
        sites.get(1); // 访问第二个元素
        // 修改元素
        sites.set(2, "Wiki"); // 第一个参数为索引位置,第二个为要修改的值
        // 删除元素
        sites.remove(3); // 删除第四个元素
        // 计算大小
        sites.size();
        // 迭代数组列表
        for (int i = 0; i < sites.size(); i++) {
    
    
            System.out.println(sites.get(i));
        }
        for (String i : sites) {
    
    
            System.out.println(i);
        }
        ...
        ...
        ...
    }
}
// [Google, Runoob, Taobao, Weibo]

詳細はこちらをご覧ください

ベクター

古いのでお勧めしません。
利点:スレッドセーフ

LinkedList

頻繁に挿入または削除する必要がある場合は、LinkedList、双方向チェーンストレージを使用してください

// 引入 LinkedList 类
import java.util.LinkedList; 

LinkedList<E> list = new LinkedList<E>();   // 普通创建方法
或者
LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表
import java.util.LinkedList;

public class RunoobTest {
    
    
    public static void main(String[] args) {
    
    
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        // 使用 addFirst() 在头部添加元素
        sites.addFirst("Wiki");
        // 使用 addLast() 在尾部添加元素
        sites.addLast("Wiki");
        // 使用 removeFirst() 移除头部元素
        sites.removeFirst();
        // 使用 removeLast() 移除尾部元素
        sites.removeLast();
        // 使用 getFirst() 获取头部元素
        sites.getFirst()
        // 使用 getLast() 获取尾部元素
        sites.getLast()
        // 迭代元素
        for (int size = sites.size(), i = 0; i < size; i++) {
    
    
            System.out.println(sites.get(i));
        }
        for (String i : sites) {
    
    
            System.out.println(i);
        }
        System.out.println(sites);
    }
}

セットする

  • 順序付けされておらず(要素の順序は配置されている順序とは関係ありません)、要素はインデックスからアクセスできません。
  • 繰り返し不可(繰り返し要素をセットに含めることはできません)。

HashSet

// 引入 HashSet 类      
import java.util.HashSet;

public class RunoobTest {
    
    
    public static void main(String[] args) {
    
    
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Runoob");  // 重复的元素不会被添加
        // 判断元素是否存在
        sites.contains("Taobao")
        sites.remove("Taobao");  // 删除元素,删除成功返回 true,否则为 false
        // 计算大小
        sites.size()
        // 迭代
        for (String i : sites) {
    
    
            System.out.println(i);
        }
        System.out.println(sites);
    }
}

TreeSet

要素は、小さいものから大きいものへなど、並べ替えられます

// 引入 TreeSet 类      
import java.util.TreeSet;

public class RunoobTest {
    
    
    public static void main(String[] args) {
    
    
    TreeSet<String> sites = new TreeSet<String>();
        sites.add(2);
        sites.add(5);
        sites.add(1);
        sites.add(3);
        sites.add(4);
        System.out.println(sites);
    }
}
// [1, 2, 3, 4, 5]

並べ替え:
1。自然な順序
2.コンパレータを提供する

地図

保存されるのは、Key-Valueマッピングです。

HashMap

// 引入 HashMap 类      
import java.util.HashMap;

public class RunoobTest {
    
    
    public static void main(String[] args) {
    
    
        // 创建 HashMap 对象 Sites
        HashMap<Integer, String> Sites = new HashMap<Integer, String>();
        // 添加键值对
        Sites.put(1, "Google");
        Sites.put(2, "Runoob");
        Sites.put(3, "Taobao");
        Sites.put(4, "Zhihu");
        // 访问元素
        Sites.get(3);
        // 删除元素
        Sites.remove(4);
        // 删除所有键值对
        Sites.clear();
        // 计算大小
        Sites.size();
        // 输出 key 和 value
        for (Integer i : Sites.keySet()) {
    
    
            System.out.println("key: " + i + " value: " + Sites.get(i));
        }
        // 返回所有 value 值
        for(String value: Sites.values()) {
    
    
          // 输出每一个value
          System.out.print(value + ", ");
        }
        System.out.println(Sites);
    }
}

ハッシュ表

同期、スレッドセーフ(一般的には使用されません)

イテレータ

Java Iterator(イテレーター)はコレクションではなく、コレクションにアクセスするためのメソッドであり、ArrayListやHashSetなどのコレクションを反復するために使用できます。

イテレータの2つの基本操作は、next、hasNext、およびremoveです。

  • it.next()を呼び出すと、イテレータの次の要素が返され、イテレータの状態が更新されます。
  • it.hasNext()を呼び出して、コレクションに要素があるかどうかを確認します。
  • it.remove()を呼び出して、イテレータによって返された要素を削除します。
// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    
    
    public static void main(String[] args) {
    
    

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的第一个元素
        System.out.println(it.next());
    }
}

収集サイトのすべての要素を出力します。

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    
    
    public static void main(String[] args) {
    
    

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的所有元素
        while(it.hasNext()) {
    
    
            System.out.println(it.next());
        }
    }
}

要素を削除します

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    
    
    public static void main(String[] args) {
    
    
        ArrayList<Integer> numbers = new ArrayList<Integer>();
        numbers.add(12);
        numbers.add(8);
        numbers.add(2);
        numbers.add(23);
        Iterator<Integer> it = numbers.iterator();
        while(it.hasNext()) {
    
    
            Integer i = it.next();
            if(i < 10) {
    
      
                it.remove();  // 删除小于 10 的元素
            }
        }
        System.out.println(numbers);
    }
}

収集ツール

コレクションを操作するためのツール

import java.util.ArrayList;

public class RunoobTest {
    
    
    public static void main(String[] args) {
    
    
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        // 访问元素
        Collections.addAll(sites, "123", "哈哈哈")
        // 最大值
        Collections.max(sites)
        // 翻转
        // 替换
        // 交换
        // 初始化
    }
}
// [Google, Runoob, Taobao, Weibo]

おすすめ

転載: blog.csdn.net/weixin_43972437/article/details/114487947