プログラミング中、あった問題 13
・JSPにArraylistをもらう方法
ArrayList<String> todo_text1 = (ArrayList<String>)request.getAttribute("todo_text1");
警告があるですが、使えます。
警告:unchecked cast from object to Arraylist<String>
・ループ
問題:複数のArraylistが一つループにプリントしたい場合は、どちら方法は一番いいです?
1.愚直な方法(For)
for(int i = 0; i < list.size(); ++i){
String s = list.get(i);
System.out.println(s);
}
2.Iterator(イテレータ)(For)
for(Iterator<String>itr = list.iterator(); itr.hasNext();){
String s = itr.next();
System.out.println(s);
}
3.拡張for文
for(String s : list){
System.out.println(s);
}
4.ラムダ
list.forEach(s -> {
System.out.println(s);
});
5. ラムダだが、メソッド参照
list.forEach(System.out::println);
6.愚直な方法(while)
int j = 0;
while (list.size() > j) {
System.out.println(list.get(j));
j++;
}
7.Iterator(イテレータ)(while)
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
自分の結論:3番の方法を使うなら、一つArraylistしか使えません。イテレータなら、同じ問題だと思います。1番と6番なら、簡単ですが、ループの中にコードがわかりやすいと思います。
(3番)
int i = 0;
for(String result : list01){
System.out.println(result); <-list02と使い方は違います。。
System.out.println(list02.get(i));
i++;
}
(6番)
int i = 0;
while(list01.size() > i){
System.out.println(list01.get(i)); <-list02と使い方は同じです。
System.out.println(list02.get(i));
i++;
}