LoginSignup
0
0

More than 1 year has passed since last update.

Java コレクションについてまとめる

Last updated at Posted at 2022-05-02

備忘録

ArrayList

Listとは、配列と同じようにインデックス番号の順序に要素を管理するコレクション
Listは、重複した要素を保持できる

配列との違いは、オブジェクト生成時に要素数を指定しなくてよい

add

  • 配列ver
// 生成時要素数は3
int[] nums = new int[3];
nums[0] = 3;
nums[1] = 6;
nums[2] = 1;

for(int value : nums) {
    System.out.println(value);
}
  • ArrayList
// 生成時中身は空
List<Integer> list = new ArrayList<>(); 

// 指定しない場合は末尾に追加
list.add(3);
list.add(6);
list.add(1);

// 位置を指定して要素を追加する
list1.add(1, 999);

for (int value : list) {
    System.out.println(value);
}

get

  • 配列
int num = nums[1];
  • arraylist
 int num = list.get(1);

remove

  • 配列
    機能なし

  • arraylist

list.remove(1);

size

要素数を取り出す

System.out.println(list.size());

map

Mapとはキーと値の組み合わせで要素を管理するコレクション
キーは重複して保持できないが値の重複はできる

Map<String, String> johnDoe = new HashMap<>();
johnDoe.put("name", "John Doe");
johnDoe.put("gender", "male");
johnDoe.put("hobby", "programming");
johnDoe.put("favorite_food", "apple");
  • HashMapの生成
  • 要素の追加 (put)
  • 要素の取り出し (get)
  • 要素を全て取り出す (拡張for文使用)
  • 要素の削除 (remove)
  • 要素数の取得 (size)

取り出し

public class HashMapEntrySample {
public static void main(String args[]) {
    Map<String, Integer> numOfUser = new HashMap<>();
    numOfUser.put("A駅", 100000);
    numOfUser.put("B駅", 130000);
    numOfUser.put("C駅", 20000);
    for (Entry<String, Integer> entry : numOfUser.entrySet()) {
       String key = entry.getKey();
       int value = entry.getValue();
       System.out.println(key + "の乗降客数:" + value + "人");
    }
 }
}

set

Setとは、重複のない要素を管理するコレクション

Set<String> ipAddresses = new HashSet<>();
 
String[] accessLog = { // 1日分のアクセスログ
    "202.4.x.x", "202.4.x.x", "49.33.x.x", "202.4.x.x", "49.33.x.x", "222.34.x.x", "180.8.x.x", "202.4.x.x",
    "222.34.x.x", "83.217.x.x", "222.34.x.x", "49.33.x.x" };

for (String ipAddress : accessLog) {
    // セットに全てのアクセスログを1つずつaddする。
    ipAddresses.add(ipAddress);
}

ネスト

ArrayList<ArrayList<Integer>> twoDimenArrayList = new ArrayList<>();
 
ArrayList<Integer> row0 = new ArrayList<>();
row0.add(10);
row0.add(20);
row0.add(30);
ArrayList<Integer> row1 = new ArrayList<>();
row1.add(100);
row1.add(200);
row1.add(300);

twoDimenArrayList.add(row0);
twoDimenArrayList.add(row1);

for (ArrayList<Integer> arrayList : twoDimenArrayList) {
  for (Integer integer : arrayList) {
    System.out.println(integer.intValue());
  }
}

備考

LinkedList という仲間が同様の機能で、特定のシチュエーションで高速で動作
LinkedListは、 要素の追加や削除が頻繁に行われる ときに有用なクラスです。
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