Java -List-
Listの利用
Listは、配列のように「何番目の要素か」というインデックス番号で要素にアクセスするタイプです。
いくつの要素を格納するかあらかじめ指定する必要はありません。
サイズは、要素が増えるにしたがって自動的に拡大されます。
メソッド | 説明 | |
---|---|---|
boolean | add(E e) | 指定された要素をリストの最後に追加します。 |
void | add(int index, E element) | リスト内の指定された位置に、指定された要素を挿入します。 |
void | clear() | すべての要素をリストから削除します。 |
boolean | contains(Object o) | リストに指定の要素がある場合に true を返します。 |
E | get(int index) | リスト内の指定された位置にある要素を返します。 |
int | indexOf(Object o) | 指定された要素がリスト内で最初に検出された位置のインデックスを返します。 |
Iterator<E> | iterator() | このリスト内の要素を適切な順序で繰り返し処理する反復子を返します。 |
E | remove(int index) | リスト内の指定された位置にある要素を削除します。 |
boolean | remove(Object o) | 指定された要素がこのリストにあれば、その最初のものをリストから削除します。 |
E | set(int index, E element | リスト内の指定された位置にある要素を、指定された要素に置き換えます。 |
int | size() | リスト内にある要素の数を返します。 |
Object[] | toArray() | リスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)格納している配列を返します。 |
< T > T[] | toArray(T[] a | リスト内のすべての要素を適切な順序で(最初の要素から最後の要素へ)格納している配列を返します。 |
ArrayListの使い方
ArrayListクラスは、Listインタフェースを実装するほかに、独自のpublicメソッドを3つほど 持っていますが、それらはあまり使用されません。
これは、MapやSetなどの他の具象クラスにも言えることですが、実装したインターフェースのメソッドを 使うだけでも十分な処理ができるからです。
そのため、例えは、ArrayListクラスのオブジェクトを作成し、それをListインタフェース変数で受ける という記述がよく利用されます。
String型のListの例
List <String> list = new ArrayList <String> ();
こうして作成したlistは、Listインタフェースのメソッドだけしか利用できませんが、それで十分なことが 多く、将来、ArrayListをLinkedListへ変更する必要があった場合でもプログラムの書き換えが少なくて 済みます。
サンプル1
import java.util.ArrayList;
import java.util.List;
public class ListSample1 {
public static void main(String[] args) {
List <String> list= new ArrayList <String>();
list.add("東京");
list.add("大阪");
list.add("福岡");
for(int i=0;i<list.size();i++){
String item =list.get(i);
System.out.println(i+" : " + item);
}
}
}
実行結果
0 : 東京
1 : 大阪
2 : 福岡
サンプル2(自作クラス利用)
import java.util.ArrayList;
import java.util.List;
class Fruit{
String name;
int num;
public Fruit(String name,int num) {
this.name=name;
this.num=num;
}
void buyFruit(){
System.out.println(name+"を"+num+"個、買いました。");
}
}
public class ListSample2 {
public static void main(String[] args) {
List<Fruit> list=new ArrayList<Fruit>();
list.add(new Fruit("りんご", 2));
list.add(new Fruit("みかん", 5));
list.add(new Fruit("もも", 3));
for(int i=0;i<list.size();i++){
Fruit fruit=list.get(i);
fruit.buyFruit();
}
}
}
実行結果
りんごを2個、買いました。
みかんを5個、買いました。
ももを3個、買いました。
サンプル3(主なメソッドの使用例)
import java.util.ArrayList;
import java.util.List;
public class ListSample3 {
public static void main(String[] args) {
List<String>list=new ArrayList<String>();
//3つの要素を追加
list.add("1月");
list.add("4月");
list.add("5月");
disp(list);
//要素を1番目の位置に挿入(最初の要素は0始まり)
list.add(1, "2月");
disp(list);
//2番目の要素を変更
list.set(2, "3月");
disp(list);
//3番目の要素を削除
list.remove(3);
disp(list);
//"1月"は存在するか
System.out.println("1月は、"+list.contains("1月"));
//3月は何番目の要素か
System.out.println("3月は"+list.indexOf("3月")+"番目の要素");
//0番目の要素を取り出す
System.out.println("0番目の要素は、"+list.get(0));
}
public static void disp(List<String> list){
System.out.print("要素数="+list.size()+"\t");
for(String str:list){
System.out.print(str+"\t");
}
System.out.println("");
}
}
実行結果
要素数=3 1月 4月 5月 要素数=4 1月 2月 4月 5月 要素数=4 1月 2月 3月 5月 要素数=3 1月 2月 3月 1月は、true 3月は2番目の要素 0番目の要素は、1月