考虑:
List<String> someList = new ArrayList<String>();
// add "monkey", "donkey", "skeleton key" to someList
for (String item : someList) {
System.out.println(item);
}
如果不使用for each语法,等价的for循环会是什么样子?
考虑:
List<String> someList = new ArrayList<String>();
// add "monkey", "donkey", "skeleton key" to someList
for (String item : someList) {
System.out.println(item);
}
如果不使用for each语法,等价的for循环会是什么样子?
当前回答
public static Boolean Add_Tag(int totalsize)
{
List<String> fullst = new ArrayList<String>();
for(int k=0; k<totalsize; k++)
{
fullst.addAll();
}
}
其他回答
它看起来像这样。非常粗糙。
for (Iterator<String> i = someList.iterator(); i.hasNext(); )
System.out.println(i.next());
Sun文档中对每一项都有很好的描述。
for (Iterator<String> i = someIterable.iterator(); i.hasNext();) {
String item = i.next();
System.out.println(item);
}
注意,如果需要使用i.remove();在循环中,或者以某种方式访问实际的迭代器,不能使用for(:)习惯用法,因为实际的迭代器只是推断出来的。
正如Denis Bueno所指出的,这段代码适用于实现Iterable接口的任何对象。
此外,如果for(:)习惯用法的右侧是数组而不是Iterable对象,则内部代码使用int索引计数器并检查array.length。请参阅Java语言规范。
在Java 8之前,您需要使用以下功能:
Iterator<String> iterator = someList.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}
然而,通过在Java8中引入Streams,您可以用更少的语法完成同样的任务。例如,对于someList,您可以执行以下操作:
someList.stream().forEach(System.out::println);
你可以在这里找到更多关于溪流的信息。
在Java8中,他们引入了forEach。使用它列表,可以循环地图。
使用for each循环列表
List<String> someList = new ArrayList<String>();
someList.add("A");
someList.add("B");
someList.add("C");
someList.forEach(listItem -> System.out.println(listItem))
or
someList.forEach(listItem-> {
System.out.println(listItem);
});
使用for each循环映射
Map<String, String> mapList = new HashMap<>();
mapList.put("Key1", "Value1");
mapList.put("Key2", "Value2");
mapList.put("Key3", "Value3");
mapList.forEach((key,value)->System.out.println("Key: " + key + " Value : " + value));
or
mapList.forEach((key,value)->{
System.out.println("Key : " + key + " Value : " + value);
});
还要注意,在原始问题中使用“foreach”方法确实有一些限制,例如在迭代过程中无法从列表中删除项目。
新的for循环更容易阅读,并且不需要单独的迭代器,但只有在只读迭代过程中才能真正使用。