Javaコレクションのまとめ
Advertisements
package forBlog; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; public class SampleList { public static void main(String[] args){ //コレクションの要素の型には参照型を指定する。基本型は指定できない! List<Integer> list = new ArrayList<Integer>(); for(int i=10; i>0;i--){ list.add(i); } //リストの要素を取り出す for(int i=0; i<list.size();i++){ System.out.println("list.size():"+ list.get(i)); } //リストの要素を取り出す for(int i: list){ System.out.println("拡張型for文:"+i); } //イテレーション for(Iterator<Integer> it = list.iterator();it.hasNext();){ Integer n = it.next(); System.out.println("Iterator:"+n); } //リストの要素の検索 //ソートしてからじゃないと検索できない Collections.sort(list); for(int i: list){ System.out.println(i); } int found_index = Collections.binarySearch(list,5,null); System.out.println("該当のインデックスは:"+found_index); //見つからない場合 int not_found_index = Collections.binarySearch(list,20,null); System.out.println("見つからない:"+not_found_index); } }
イテレータとは
繰り返し処理を抽象化したオブジェクトのこと。
Iteratorインターフェースがもつ3つのメソッド
boolean hasNext(); 次に取り出す要素があるか調べる
E next(); まだ取り出していない次の要素を取り出す
void remove(); nextで取り出した要素をコレクションから削除する
以下の例を見てみる
//イテレーション for(Iterator<Integer> it = list.iterator();it.hasNext();){ Integer n = it.next(); System.out.println("Iterator:"+n); }
it.hasNext()で次の要素があればtrueとなって、for文を継続する。
it.nextで、次の要素を取り出す
拡張型for文と従来型for文
//リストの要素を取り出す for(int i=0; i<list.size();i++){ System.out.println("list.size():"+ list.get(i)); } //リストの要素を取り出す for(int i: list){ System.out.println("拡張型for文:"+i); }
どっちも同じことである。
順番に要素を取り出している。
要素をソートする
Collections.sort(list); for(int i: list){ System.out.println(i); }
検索前には必ずソートが必要なので注意。
こうすると辞書順、数字順に並べ替えられる。
int found_index = Collections.binarySearch(list,5,null); System.out.println("該当のインデックスは:"+found_index); //見つからない場合 int not_found_index = Collections.binarySearch(list,20,null); System.out.println("見つからない:"+not_found_index);
バイナリサーチを使えば、探している要素のインデックスを取得できる。
一番上のソースを実行した結果は以下の通り
list.size():10 list.size():9 list.size():8 list.size():7 list.size():6 list.size():5 list.size():4 list.size():3 list.size():2 list.size():1 拡張型for文:10 拡張型for文:9 拡張型for文:8 拡張型for文:7 拡張型for文:6 拡張型for文:5 拡張型for文:4 拡張型for文:3 拡張型for文:2 拡張型for文:1 Iterator:10 Iterator:9 Iterator:8 Iterator:7 Iterator:6 Iterator:5 Iterator:4 Iterator:3 Iterator:2 Iterator:1 1 2 3 4 5 6 7 8 9 10 該当のインデックスは:4 見つからない:-11