0
0

(java silver) Collection

Posted at

JavaSilverでメモしたところ備忘録として残しておこうと思います。

Collectionインターフェースとは

  • コレクション・インターフェースはSetやListのようなサブインターフェースの実装を供給している
    Mapもコレクションに似ているがコレクションではない
    コレクションフレームワークには入っている

  • コレクションフレームワークとは多数のデータをまとめて管理および処理するために用意されたもので、様々なタイプのインタフェースとクラスで構成されjava.util.Collectionとjava.util.Mapの2つのグループに分けることができます

Collection・インターフェースのメソッド

メソッド名 概要
add(E e) 要素を追加する
remove(Object o) 指定された要素を削除する
contains(Object o) 指定された要素がcollectionに含まれているかどうか返す
isEmpty() コレクションがからかどうか返す空ならtrue
size() コレクションの要素数を返す
iterater() コレクションを反復処理するためのイテレーターを返す
  • Collectionインターフェースは、java.utilパッケージのjava.util.Iterableインターフェースを継承しこちらはJavaで拡張for分(for-each)分を使用できるようにするためのインターフェースです

サブインターフェース

List(シーケンス)

  • 順序付けられたコレクション。重複した要素を含むことができる、ユーザーは要素を挿入する場所やインデックスによって要素にアクセスすることを正確に制御できる

  • Listはインターフェースなのでインスタンは生成できない

  • Listのメリットはコレクション(データ型)に変更したい場合、宣言時に手を加えなくていい

  • ListのデメリットはArrayListにしかメソッドがないときにキャストしなければならない

  • Listは以下のクラスで実装されています
  1. ArrayList
  2. LinkedList
  3. Vector
  4. Stack

ArrayList

  • 配列を便利に使いやすくしたクラス

  • Array(配列)では作成時に決めた配列の大きさを変えることはできず、追加でサイズを変更したい場合には新しく配列を作り直す必要がありましたが、ArrayListでは使う側が配列のサイズを意識せずに扱うことができる(動的配列)

  • スレッドセーフではない

スレッドセーフとは

マルチスレッドの環境で実行されても内部データへのアクセスが競合せずに、常に内部データの整合性が保たれているように対策されている状態のことです。

ArrayListにしかないメソッド

  1. Listをコピーするcloneメソッド
  2. Iterater型のオブジェクトIteratarメソッドを使い使用することができる
  3. Iterater 型のオブジェクトからhasNextnextメソッドを呼び出せる
メソッド名 概要
hasNext リストが次の要素を追っているときはtrueを返す
next 次の要素を返す
  • 配列からListに変換するときはArrays.asList()メソッドを使用する
//配列からlistに変換

String[] array1 = { "赤", "青", "緑", "紫" };
List<String> list1 = Arrays.asList(array1);

  • リストから配列への変換する場合は、toArrayメソッドを使用
//Listから配列に変換

List<String> list2 = new ArrayList<>(Arrays.asList("赤", "黄", "青"));
String[] array2 = list2.toArray(new String[list.size()]);

LinkedList

  • 要素がどのように並んでいるか別で管理しているために要素を削除したり追加する場合にArrayListよりも高速に動作するが、要素を順にたどるため検索などはArrayListよりも遅くなる

Listのよく使用するメソッド

メソッド名 概要
add() リストに値を追加
addAll() リストにリストを追加
set() リストの値を変更
get() リストの値を取得
size() リストの要素数を取得
subList() リストの一部分から切り取る
contain() リストに値が含まれるか判定
indexOf() リストから指定した文字列のインデックスを取得
sort() リストを順番に並べる
remove() インデックスを指定して削除
distinct() 重複した要素がある場合は削除
clear() リストからすべての要素を削除

メソッドを使わずlistを出力すると[,]も出力される

//java

List<String> sample_list = new ArrayList<>(Arrays.asList("赤", "青", "緑", "黒", "白"));

System.out.println(sample_list);
//[ 赤,青,緑,黒,]

Set

  • 重複した要素を含むことができないコレクション

  • 順序があるとは限らない

  • Setを継承したクラス

  1. HashSet
  2. TreeSet
  3. LinkedList

HashSet

  • ハッシュテーブルを利用した重複なしの配列になります
  • 順序付けはない

TreeSet

  • キーを利用して常にソートした状態のまま保持しています

Queue

  • 追加の挿入、抽出、及び検査が追加されたコレクション

引用先:https://www.divx.co.jp/media/techblog-220627

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0