⑴ java中list集合用foreach输出
List集合中存储的是Object类型的对象,而非直接的String类型。因此,在使用foreach遍历List时,不能直接将List的元素类型声明为String,而应保持为Object类型。例如:
List<Object> list = new ArrayList<Object>();
list.add("asd");
list.add("sad");
list.add("sad");
for(Object s : list) {
System.out.println(s);
}
在上述代码中,我们首先创建了一个Object类型的List集合,并添加了三个String类型的字符串。然后,我们使用foreach循环遍历这个List,并将每个元素作为Object类型处理,最后通过System.out.println()输出每个元素。
如果尝试将List的元素类型声明为String,如以下代码所示:
List<String> list = new ArrayList<String>();
list.add("asd");
list.add("sad");
list.add("sad");
for(String s : list) {
System.out.println(s);
}
虽然编译器不会报错,但实际上这并不会解决问题。因为在这种情况下,编译器会在编译时进行类型检查,但运行时仍会将List中的Object类型元素强制转换为String类型。这可能导致运行时异常,特别是在List中存储的元素并非都是String类型时。
因此,在使用foreach遍历List时,请确保List的元素类型与循环中的变量类型一致,以避免潜在的运行时问题。
⑵ java中foreach的用法
Java中foreach的用法如下:
基本语法:for { // 引用元素变量value的Java语句 }。这种语法结构用于遍历数组或集合中的每一个元素。
优势:
适用场景:
局限性:
结合泛型:在使用foreach时,可以结合泛型来进一步提升代码的类型安全性。
总结:foreach是Java中一种强大的遍历工具,尤其适用于常规遍历场景。然而,在处理索引相关的操作时,需要谨慎使用或切换到传统的for循环。
⑶ java中 foreach 和迭代器在遍历 List 集合 一些情况下为什么能使用集合自动的删除方法删除元素
你a<70的时候是倒数第二位,也就是66,没有抛出异常是因为之前list大小为5,你删除66后,list大小为4,你第一次遍历list大小为5的数组的时候,66的cursor在index = 4,当你删除后,遍历list大小为4的数组时, cursor = 4 = newlist.size()。
ArrayList里的这个方法就会判断list已经读取完毕了,所以不会抛出异常。
publicbooleanhasNext(){
returncursor!=size;
}
a < 90的时候在第二位就发生了变化,list的大小也发生了变化
看了下ArrayList的源码,每次循环的时候都会call这个方法检查list的大小是否发生了变化,但是这个方法是发生在hasNext方法之后的
(){
if(modCount!=expectedModCount)
();
}