我已经看到了创建一个“List”对象类型后使用FOR循环的不同方法。这是什么动态循环在java
List<Focus> focuses = new ArrayList<Focus>();
String my_string = "";
for (Focus obj1 : list_obj_x) {
my_string += obj1;
}
我不明白这个FOR循环是如何工作的。
感谢
我已经看到了创建一个“List”对象类型后使用FOR循环的不同方法。这是什么动态循环在java
List<Focus> focuses = new ArrayList<Focus>();
String my_string = "";
for (Focus obj1 : list_obj_x) {
my_string += obj1;
}
我不明白这个FOR循环是如何工作的。
感谢
增强的for循环可与任何使用实现Iterable<X>
和数组的对象。它等同于使用for循环与一个迭代(在迭代的情况下):
// with Iterables:
Iterable<String> iterableStrings = getListOfStrings();
// standard for loop
for (Iterator<String> it = iterableStrings.iterator(); it.hasNext();) {
String s = it.next();
System.out.println(s);
}
// enhanced for loop
for (String s : iterableStrings) {
System.out.println(s);
}
// with arrays:
String[] stringArray = getStringArray();
// standard for loop
for (int i = 0; i < stringArray.length; i++) {
String s = stringArray[i];
System.out.println(s);
}
// enhanced for loop
for (String s : stringArray) {
System.out.println(s);
}
它的使用是不限于“索引的集合”像列表和数组。
参考
这就是所谓的enhanced for-loop/For-Each construct。在java 1.5中引入。它首先被引入来迭代集合和数组。
此:
List<Focus> focuses = new ArrayList<Focus>();
String my_string = "";
for (Focus obj1 : list_obj_x) {
my_string += obj1;
}
是相同
List<Focus> focuses = new ArrayList<Focus>();
String my_string = "";
for (int i=0; i<focuses.size(); i++) {
my_string += focuses.get(i);
}
注意,但是,你只能使用for-each循环对于那些实施Iterable interface对象。
实现此接口允许对象成为“foreach”语句的目标。
for (Focus obj1 : list_obj_x) {
my_string += obj1;
}
当你看到冒号(:)“在”读它上面的循环读作“每个在list_obj_x重点OBJ1。”正如你所看到的,for-each结构精美的结合与泛型。它保留了所有类型的安全性,同时消除了剩余的杂波。因为您不必声明迭代器,所以不必为其提供通用声明。 (编译器为您完成此你背后,但你不必用它关心自己)
,相等于上述每个循环是:
for (int i =0 ; i< list_obj_x.size(); i++) {
my_string += list_obj_x.get(i);
}
我想不明白,如果* *它的工作...什么是'list_obj_x',除了是内容违反命名约定一个变量名? – 2013-02-15 16:29:42
该代码不起作用。因为我想知道FOR循环的工作方式或FOR循环的名称。 – 2013-02-15 16:44:06
很多东西都不起作用。例如,您不能将“Focus”的实例追加到字符串中。 (应该是'my_string + = obj1.toString()'或类似的东西) – 2013-02-15 16:47:06