Java 如何像数组一样迭代列表
我见过这样的代码:Java 如何像数组一样迭代列表,java,list,arraylist,Java,List,Arraylist,我见过这样的代码: List<String> listOfStrings = new ArrayList<>(); listOfStrings.add("A"); listOfStrings.add("B"); for(String txt: listOfStrings) { System.out.println(txt); } List listofstring=new ArrayList(); 添加(“A”); 添加(“B”); for(字符串txt:ListO
List<String> listOfStrings = new ArrayList<>();
listOfStrings.add("A");
listOfStrings.add("B");
for(String txt: listOfStrings) {
System.out.println(txt);
}
List listofstring=new ArrayList();
添加(“A”);
添加(“B”);
for(字符串txt:ListOfstring){
System.out.println(txt);
}
我还没有看到ArrayList的内部代码或它的接口,因为我不需要附加jar以便查看源代码
谁能解释一下这是怎么可能的
好,好。我更新了问题。。。。我想澄清一下:我是否可以创建自己的数据结构,然后通过一些特殊的内部代码,用户也可以在自己的数据结构上为每个循环使用
隐式迭代器,因为每个循环都在iterable
集合上使用隐式迭代器。它更具可读性和更清晰。只要您不想重新构造(删除或交换元素),集合就是一个不错的选择。他们在Java5中重新添加了这个。这叫一个。它是使用迭代器在集合上循环的缩写。之所以有效,是因为ArrayListThis for子句执行以下操作:
for(T item: Iterable<T>)
for(T项:Iterable)
第一部分(T item
)用于属于实现Iterable
(第二部分))的任何类的元素
它实际上不是一个ArrayList
特性,但是您可以使用任何Iterable
类来实现它。因为它在内部被转换为集合的迭代器
对于每个循环
for (type var : coll) {
body-of-loop
}
将转换为以下形式:
for (Iterator<type> iter = coll.iterator(); iter.hasNext(); ) {
type var = iter.next();
body-of-loop
}
for(迭代器iter=coll.Iterator();iter.hasNext();){
类型var=iter.next();
环体
}
这是一个循环
下面是代码的另一种表示形式。这可能有助于你理解
for(int i = 0; i < listOfStrings.size(); i++) {
System.out.println(listofStrings.get(i));
}
for(int i=0;i
内部转换为
for(Iterator<String> i = listOfStrings.iterator();
i.hasNext(); ) {
String txt = i.next();
System.out.println(txt);
}
for(迭代器i=listOfStrings.Iterator();
i、 hasNext();){
字符串txt=i.next();
System.out.println(txt);
}
根据增强的for语句,编译后的for语句相当于基本的for语句
例如:
List它适用于每个循环ie(针对循环增强)
for(T项:Iterable)
内部使用
for(int i = 0; i < listOfStrings.size(); i++) {
System.out.println(listofStrings.get(i));
}
for(int i=0;i
这最适合于集合和数组(实现Iterable接口)
缺点是你不能按相反的顺序打印。在谷歌搜索增强的循环。关于更新的问题,也请回答我。谢谢。我已经得到了我想知道的答案。难以忍受。谢谢。你想为迭代集合创建自定义功能吗?@Veera,不,只是想提供更干净、更简单、不冗长的迭代集合的方法。哦。所以我们需要扩展Iterable?如果你想创建你自己的Iterable对象,是的;ArrayList和许多其他类已经完成了这项工作,因此您实际上不必做额外的工作。(顺便说一句,你也可以在上面使用数组)耶。你的答案实际上也满足了我的问题,但我想我最多只能给一个答案打分。但是谢谢。我明白了。请解释一下否决票,这样我可以从错误中吸取教训。
for (Iterator<Integer> #i = l.iterator(); #i.hasNext(); ) {
float #i0 = (Integer)#i.next();
}
for(T item: Iterable<T>)
for(int i = 0; i < listOfStrings.size(); i++) {
System.out.println(listofStrings.get(i));
}