Java学習ロードコレクション

Java学習ロードコレクション

概要概要

コレクションの定義

コレクションとは何ですか?セットとは、「いくつかの特定の要素で構成される全体」です。

概念的な観点から、コレクションと配列は非常に似ていますが、配列があるのになぜ収集する必要があるのでしょうか。

  • 配列のサイズは、初期化後は不変です。
  • 配列にはインデックス順にのみアクセスできます。

配列には上記の欠点があるため、コレクションはJavaで提供されています。

コレクションの種類と特徴

java.utilパッケージに付属するJava標準ライブラリは、クラスのコレクションを提供します。Collectionこれは、他のMapすべてのコレクションクラスのルートインターフェイスに追加されます。Javajava.utilパッケージは、主に次の3種類のコレクションを提供します。

  • List:順序付きリストのコレクション。
  • Set:重複する要素がないことを保証するコレクション。
  • Map:Key-Valueで検索されたマッピングテーブルのコレクション。

Javaコレクションには次の特徴があります。

  • 個別のインターフェースと実装クラス。
  • 2つ目は、ジェネリックスをサポートすることです。コレクションに制限できるのは、同じデータ型の要素のみを配置できることです。

コレクションへのJavaアクセスは、統一されたウェイイテレーター(Iterator)を介して実現されます。これにより、上位層の使用のみを考慮でき、下位層のタイプは考慮できません。

1.Collectionインターフェースの一般的な方法

1.要素を追加します

  • add(int index,E element):コレクションに1つのアイテムを追加します。

    • index(オプションのパラメーター)-要素が挿入されるインデックス値を示します。

    • element -挿入される要素。

    • 戻り値:要素が正常に挿入された場合は、trueを返します。

      インデックスが範囲外の場合、add()メソッドはIndexOutOfBoundsException例外をスローします。

  • addAll(int index, Collection c)

    • index(オプションのパラメーター)-要素が挿入されるインデックス値を示します。

    • c-挿入されるコレクション要素。

    • 戻り値:要素が正常に挿入された場合は、trueを返します。

      指定されたセットがnullの場合、過剰NullPointerExceptionな異常。

      インデックスが範囲外の場合、add()メソッドはIndexOutOfBoundsException例外をスローします。

2.有効な要素の数を取得します

  • size():配列内の要素の数を返します。
    • 戻り値:配列内の要素の数を返します。

3.コレクションを空にします

  • clear():動的コレクション内のすべての要素を削除します。

4.それは空のセットですか

  • isEmpty():コレクションが空かどうかを判別します。

    • 戻り値:配列に要素がない場合は、trueを返します。

      配列に要素がある場合は、falseを返します。

5.要素が含まれていますか?

  • contains(Object obj):要素がセットに含まれているかどうかを判断するために使用されます。

    • obj -検出される要素。

    • 戻り値:指定された要素が動的配列に存在する場合、trueを返します。

      指定された要素が動的配列に存在しない場合、falseが返されます。

  • containsAll(Collection c):指定したセットのすべての要素がセットに含まれているかどうかを確認します。

    • collection -パラメータを設定します。
    • 戻り値:コレクション内のすべての要素が動的配列に含まれている場合、trueを返します。
    • 指定された要素を持つコレクションがCollectionThrowsの互換性のない要素に存在する場合ClassCastException;
    • コレクションにnull要素が含まれていて、null値の設定が許可されていない場合、NullPointerException例外がスローされます。

6.要素を削除します

  • remove(Object obj / int index):コレクション内の単一の要素を削除します。

    • obj-削除する要素。obj要素が複数回出現する場合は、配列に最初に出現する要素を削除します。

    • index-削除する要素のインデックス値。

    • 戻り値:要素が渡され、削除が成功した場合、trueを返します。

      インデックス値が渡されると、削除された要素が返されます。

      指定されたインデックスが範囲外の場合、メソッドはIndexOutOfBoundsException例外をスローします。

  • removeAll(Collection c):指定したコレクションに存在する動的配列要素を削除します。

    • c-動的配列リストで削除される要素のコレクション。

    • 戻り値:要素がコレクションから正常に削除された場合はtrueを返します。

      指定されたCollection要素を持つクラスに存在する要素のセットがクラスと互換性がない場合、ClassCastException例外がスローされます。

      コレクションにnull要素が含まれCollectionていて、指定されたものがnull要素を許可しない場合はNullPointerException、例外をスローします。

7.交差点を見つける

  • retainAll(Collection c)ArrayListこれらの要素を指定されたコレクションに保持することもできます。

    • コレクション-コレクションパラメータ;

    • 戻り値:要素がコレクションから削除された場合はtrue。

      指定されたCollection互換性のないクラス要素に存在する要素のセットがClassCastException例外としてスローされた場合

      コレクションにnull要素が含まれCollectionていて、指定された許可がない場合、null要素がスローされNullPointerExceptionます。

8.セットが等しいかどうかを判断します

  • eauqls(Collection c):2つのセットが等しいかどうかを判別します。
    • コレクション-コレクションパラメータ;
    • 戻り値:2つのセットが等しい場合はtrueを返します。

9.配列に変換します

  • toArray(T[] arr):コレクションオブジェクトを配列に変換します。

    • T [] arr(オプションのパラメーター)-配列要素を格納するために使用される配列。

    • 戻り値:パラメーターT [] arrがパラメーターとしてメソッドに渡されると、タイプTの配列が返されます。

      パラメータが渡されない場合、オブジェクトタイプの配列が返されます。

10.コレクションオブジェクトのハッシュ値を取得します

  • hashCode():コレクションのハッシュ値を返します。

11.コレクションをトラバースします

  • iterator()Iteratorトラバースのセットについて、インターフェイスインスタンスを返します

次に、Iteratorコレクションを介してインターフェイスを使用します

Javaプログラムでは、Iterator(イテレータ)はコレクションではなく、コレクションにアクセスするためのメソッドです。

GoFは、イテレータを次のように定義しています。オブジェクトの内部詳細を公開せずに、コンテナオブジェクトの各要素にアクセスするメソッドを提供します。

1.イテレータの一般的な方法

  • next():イテレータの次の要素を返し、イテレータの状態を更新します。
  • hasNext():セットに要素があるかどうかを検出するために使用されます。ある場合はtrue、ない場合はfalse。
  • remove():イテレータから返された要素を削除します。

2.イテレータを取得します

イテレータオブジェクトを使用してコレクションをトラバースするには、最初にイテレータを取得する必要があります。setiterator()メソッドを呼び出してイテレータを取得できます。

// 创建集合
Collection collection = new ArrayList();

// 添加元素
collection.add(123);
collection.add("123");
collection.add(123L);
collection.add('A');

Iterator iterator = collection.iterator();

3.コレクションをトラバースします

コレクションに対して反復を使用することは、本質的に常にnext()プロシージャメソッドを呼び出します。コレクションの要素が後でトラバースされた場合、今回はnext()メソッドを呼び出すとNoSuchElementExceptionエラーがスローされます。

したがって、推奨事項では次の方法を使用してトラバースします。

while (iterator.hasNext()) {
    
    
	System.out.println(iterator.next());
}

3つの一般的に使用されるコレクション

以下は、私たちの日常の開発で頻繁に使用される4つのコレクションです。

  • LinkedList:このクラスはListインターフェースを実装し、null(空)要素を許可します。主にリンクリストのデータ構造を作成するために使用されます。このクラスには同期メソッドがありません。複数のスレッドが同時に1つにアクセスする場合は、List自分でアクセス同期を実装する必要があります。解決策はList作成時に同期構築することListです。
  • ArrayList:このクラスは実装されたListインターフェイスでもあり、可変サイズの配列を実装します。これにより、要素にランダムにアクセスしてトラバースするときのパフォーマンスが向上します。このクラスも非同期であるため、マルチスレッドの状況では使用しないでください。その挿入と削除の効率は低いです。
  • HashSet:このクラスはSetインターフェイスを実装し、重複する要素を許可せず、コレクション内の要素の順序を保証せず、nullの値を持つ要素を含めることができますが最大で1つです。
  • HashMapHashMapはハッシュテーブルであり、その格納されたコンテンツはキーと値のマッピングです。このクラスは、Mapインターフェイスを実装しHashCodeキーのに従ってデータを格納し、アクセス速度が高速です。レコードのキーは最大でnullに許可され、スレッドの同期はサポートされていません。

1.1。 LinkedList

import java.util.LinkedList;

public class Demo {
    
    
    public static void main(String[] args) {
    
    
        LinkedList<String> sites = new LinkedList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites);  // [Google, Runoob, Taobao, Weibo]
    }
}

一般的な方法

方法 説明
public boolean add(E e) リンクリストの最後に要素を追加し、成功したかどうかを返します。成功はtrue、失敗はfalseです。
public void add(int index, E element) 指定した位置に要素を挿入します。
public boolean addAll(Collection c) セットのすべての要素をリンクリストの最後に追加し、成功したかどうかを返します。成功はtrueで、失敗はfalseです。
public boolean addAll(int index, Collection c) セットのすべての要素をリンクリストの指定された位置に追加し、成功したかどうかを返します。成功はtrueで、失敗はfalseです。
public void addFirst(E e) 要素がヘッドに追加されます。
public void addLast(E e) 要素が最後に追加されます。
public boolean offer(E e) リンクリストの最後に要素を追加し、成功したかどうかを返します。成功はtrue、失敗はfalseです。
public boolean offerFirst(E e) 先頭に要素を挿入し、成功したかどうかを返します。成功はtrueで、失敗はfalseです。
public boolean offerLast(E e) 最後に要素を挿入し、成功したかどうかを返します。成功はtrueで、失敗はfalseです。
public void clear() リンクリストをクリアします。
public E removeFirst() 最初の要素を削除して返します。
public E removeLast() 最後の要素を削除して返します。
public boolean remove(Object o) 要素を削除して、成功したか、成功したか、失敗したかを返します。
public E remove(int index) 指定した位置の要素を削除します。
public E poll() 最初の要素を削除して返します。
public E remove() 最初の要素を削除して返します。
public boolean contains(Object o) 要素が含まれているかどうかを確認します。
public E get(int index) 指定された位置にある要素を返します。
public E getFirst() 最初の要素を返します。
public E getLast() 最後の要素を返します。
public int indexOf(Object o) 指定された要素が最初に出現するインデックスを前から後ろに見つけます。
public int lastIndexOf(Object o) 指定された要素の最後の出現のインデックスを見つけます。
public E peek() 最初の要素を返します。
public E element() 最初の要素を返します。
public E peekFirst() ヘッド要素を返します。
public E peekLast() テール要素を返します。
public E set(int index, E element) 指定した位置にエレメントをセットしてください。
public Object clone() リストのクローンを作成します。
public Iterator descendingIterator() 逆イテレータを返します。
public int size() リンクリスト内の要素の数を返します。
public ListIterator listIterator(int index) 指定された位置から最後までのイテレータを返します。
public Object[] toArray() リンクリスト要素の配列を返します。
public T[] toArray(T[] a) リンクリスト要素から変換された配列を返します。

2.2。 ArrayList

import java.util.ArrayList;

public class Demo {
    
    
    public static void main(String[] args) {
    
    
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Weibo");
        System.out.println(sites);  // [Google, Runoob, Taobao, Weibo]
    }
}

一般的な方法

方法 説明
add() の指定された位置ArrayList挿入された要素
addAll() 添加集合中的所有元素到 ArrayList
clear() 删除 ArrayList中的所有元素
clone() 复制一份 ArrayList
contains() 判断元素是否在 ArrayList
get() 通过索引值获取 ArrayList中的元素
indexOf() 返回 ArrayList中元素的索引值
removeAll() 删除存在于指定集合中的 ArrayList里的所有元素
remove() 删除 ArrayList里的单个元素
size() 返回 ArrayList里元素数量
isEmpty() 判断 ArrayList是否为空
subList() 截取部分 ArrayList的元素
set() 替换 ArrayList中指定索引的元素
sort() ArrayList元素进行排序
toArray() ArrayList转换为数组
toString() ArrayList转换为字符串
ensureCapacity() 设置指定容量大小的 ArrayList
lastIndexOf() 返回指定元素在 ArrayList中最后一次出现的位置
retainAll() 保留 ArrayList中在指定集合中也存在的那些元素
containsAll() 查看 ArrayList是否包含指定集合中的所有元素
trimToSize() ArrayList中的容量调整为数组中的元素个数
removeRange() 删除 ArrayList中指定索引之间存在的元素
replaceAll() 将给定的操作内容替换掉数组中每一个元素
removeIf() 删除所有满足特定条件的 ArrayList元素
forEach() 遍历 ArrayList中每一个元素并执行特定操作

3. HashSet

示例

import java.util.HashSet;

public class Demo {
    
    
    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.remove("Taobao");  // 删除元素,删除成功返回 true,否则为 false
        System.out.println(sites);  // [Google, Runoob, Zhihu]
    }
}

常用方法

方法 描述
add() 添加元素
remove() 删除元素
clear() 删除所有元素
contains() 是否包含指定元素
isEmpty() 判断是否为空
size() 获取集合中元素个数

4. HashMap

示例

import java.util.HashMap;

public class Demo {
    
    
    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");
        System.out.println(Sites);  // {1=Google, 2=Runoob, 3=Taobao, 4=Zhihu}
    }
}

常用方法

方法 描述
clear() 删除 HashMap 中的所有键/值对
clone() 复制一份 HashMap
isEmpty() 判断 HashMap是否为空
size() 计算 HashMap中键/值对的数量
put() 将键/值对添加到 HashMap
putAll() 将所有键/值对添加到 HashMap
putIfAbsent() 如果 HashMap中不存在指定的键,则将指定的键/值对插入到 HashMap中。
remove() 删除 HashMap中指定键 key 的映射关系
containsKey() 检查 HashMap中是否存在指定的 key 对应的映射关系。
containsValue() 检查 HashMap中是否存在指定的 value 对应的映射关系。
replace() 替换 HashMap中是指定的 key 对应的 value。
replaceAll() HashMap中的所有映射关系替换成给定的函数所执行的结果。
get() 获取指定 key 对应对 value
getOrDefault() 获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值
forEach() HashMap中的每个映射执行指定的操作。
entrySet() 返回 HashMap中所有映射项的集合集合视图。
keySet() 返回 HashMap中所有 key 组成的集合视图。
values() 返回 HashMap中存在的所有 value 值。
merge() 添加键值对到 HashMap
compute() HashMap中指定 key 的值进行重新计算
computeIfAbsent() HashMap中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 HashMap
computeIfPresent() HashMap中指定 key 的值进行重新计算,前提是该 key 存在于 HashMap中。

おすすめ

転載: blog.csdn.net/qq_43580193/article/details/112758210