Chr*_*ris 2 java collections foreach generic-list
我已经获得了一个创建列表的列表,我可以使用'for each'类型的'for'循环遍历列表,而不是为Iterator构建一个构造函数.问题是当我下面的代码时,我得到错误消息"只能迭代数组或java.lang.Iterable的实例".这是代码:
public static void main(String[] args) {
GList<InnerList> list = new GList<InnerList>();
GList<InnerList> numList = new GList<InnerList>();
InnerList lst = new InnerList ();
Scanner sc = new Scanner(System.in);
String answer;
while (true){
System.out.println ("Do you want to create a list (y/n)? ");
answer = sc.next();
if (answer.equals("y")){
System.out.println("Enter the name of the list: ");
answer = sc.next();
lst.setName(answer);
if (list.isEmpty()== true){
list.insertFirstItem(lst);
}
else {
list.insertNext(lst);
}
}
while (true){
System.out.println("Do you want to enter a number (y/n)?");
answer = sc.next();
if (answer.equals("y")){
System.out.println("Enter Number: ");
answer = sc.next();
try {
int num1 = Integer.parseInt(answer);
lst.setInner(num1);
if (list.isEmpty() == true){
list.insertFirstItem(lst);
}
else {
list.insertNext(lst);
}
}
catch (NumberFormatException e){
System.out.println("You must enter an number! " + e);
sc.close();
}
}
return;
}
}
for (GList<InnerList> ilName : list){ //here are my error msgs. I also tried replacing GList<InnerList> with 'InnerList' and String.
for(GList<InnerList> ilInts : list){
System.out.println(ilName);
System.out.println(ilInts);
}
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解为什么当集合应该是可迭代的时候GList不被认为是java.lang.iterable的一个实例?
谢谢.
它不被视为实例,java.lang.Iterable因为它没有实现接口java.lang.Iterable.就如此容易.将其声明更改为
public class GList<T> implements Iterable<T>
Run Code Online (Sandbox Code Playgroud)
你会很乐意使用它的foreach循环.但是因为list是一个实例GList<InnerList>,并且由于GList<InnerList>包含实例InnerList(至少,我猜是这样),循环应该是:
for (InnerList innerList : list) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4279 次 |
| 最近记录: |