List
https://docs.oracle.com/javase/jp/8/docs/api/java/util/ArrayList.html
順序つきの配列で、値の重複が可能。
ArrayList<String> fruits = new ArrayList<>();
fruits.add("りんご");
fruits.add("ばなな");
fruits.add("ぶどう");
fruits.add("りんご"); // りんごを複数登録する
for (String f : fruits) {
System.out.println(f);
}
-> りんご
-> ばなな
-> ぶどう
-> りんご
格納した順序で、かつ重複登録したりんごが格納できています。
順序を保持するため、2番目のりんごと4番目のりんごをそれぞれ別に扱えるようになっています。
Set
https://docs.oracle.com/javase/jp/8/docs/api/java/util/HashSet.html
要素の順番を保証しない配列で、値の重複が不可能。
Set<String> fruits = new HashSet<String>;
fruits.add("りんご");
fruits.add("ばなな");
fruits.add("ぶどう");
fruits.add("りんご"); // りんごを複数登録する
for (String f : fruits) {
System.out.println(f);
}
-> ばなな
-> ぶどう
-> りんご
順不同で、かつ重複登録したりんごが無視されました。
使い分け
順序を意識せず、重複登録させないプログラムであれば高速なSetの方が良いです。