【Java】Progateで取り上げられていないJavaの基本まとめ~その2・List編~
リスト
Progateでは配列については取り上げられているが、リストについては触れられていない。
配列とリストは似ているが何が違うのか?
配列
int result[] = new int[5];
result[0] = 85;
result[1] = 78;
result[2] = 92;
result[3] = 62;
result[4] = 69;
入れ物に例えるなら、配列result[]は先に入れ物の大きさを決めなければならず、
さらに一度その大きさを決めるとそれ以降は変更できないという特性をもつ。
リスト
List<String> list = new ArrayList<String>();
これに対しリストの大きさは可変であり、要素の追加・削除が可能。
インターフェイス
javaではリストを扱うためのインターフェイス(仕様書のようなもの)が定義されている。
このListインターフェイスはCollection(コレクション)をルーツとしたインターフェースである。
packageのimportが必要
Listを使用するためにはjava.util.List
をimrport
する必要がある。
import java.util.List;
また、Listはインターフェイス(仕様書)なのでそれ自体は実装を持たないため、
別途Listインターフェイスを実装したclass
もimport
する必要がある
ArrayListとLinkedList
Listインターフェイスを実装したclass
に、ArrayList
とLinkedList
がある。
ArrayListクラスのインスタンスを作成してみる
import java.util.list;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
System.out.println(list);
}
}
/// 実行結果
/// >[]
List<String> list = new ArrayList<>();
変数がList型であること、このListが扱うデータがString型であることを宣言している。
LinkedListクラスのインスタンス作成
import java.util.list;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
List<String> list = new LinkedList<>();
System.out.println(list);
}
}
/// 実行結果
/// >[]
LinkedListにはListにない固有メソッドがいくつか定義されているがここでは省略。
(ArrayListにはほとんどない)
プリミティブ型を扱うリストの場合
Listはint
, long
などのプリミティブ型を直接扱うことができない。
String
は参照型。
プリミティブ型と参照型について詳しくは以前の記事の表を参考までに。
https://qiita.com/hiroshimahiroshi/items/01de02cfe1caacd07540#3-%E5%9F%BA%E6%9C%AC%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%E3%81%A8%E5%8F%82%E7%85%A7%E5%9E%8B
ということでint
やlong
などのプリミティブ型を扱う場合にはint
のラッパークラスInteger
、
long
のラッパークラスLong
を使用する。
List<Integer> list = new LinkedList<>();
プリミティブ型?ラッパークラス?がよくわからないけどとりあえずリストだけ先にわかりたい!
という場合は、とりあえずList<型>
の型が小文字で始まっていたら何か変だと思っておいて、
プリミティブ型と参照型、ラッパークラスについては別途学びましょう。
終わりに
記事を大幅に編集しました。
Progateを終えてJavaを何でもわかった気になってしまった自分みたいな人の為の記事ですので、
さわりしか触れていませんが重要基礎知識だと思いますので、この先はCODEPREPで理解を深めましょう。
Author And Source
この問題について(【Java】Progateで取り上げられていないJavaの基本まとめ~その2・List編~), 我々は、より多くの情報をここで見つけました https://qiita.com/hiroshimahiroshi/items/93e30ae6cfc1b97c9b29著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .