備忘録
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は、 要素の追加や削除が頻繁に行われる ときに有用なクラスです。