开发手机端网站模板下载,重庆妇科医院推荐,小程序平台登陆,qq邮件网站建设的模块问题#xff1a;Java里面遍历list的方式
对于Java语言有点陌生#xff0c;我尝试熟悉遍历list#xff08;或者其他集合#xff09;的所有方法#xff08;或者是其他正确的语法#xff09;和它们每一个方法的优缺点
给定 List的list对象#xff0c;我知道有下列方法去循…问题Java里面遍历list的方式
对于Java语言有点陌生我尝试熟悉遍历list或者其他集合的所有方法或者是其他正确的语法和它们每一个方法的优缺点
给定 List的list对象我知道有下列方法去循环所有的元素
基于循环的当然这也等价于while/do while循环
// 不推荐哈看下面
for (int i 0; i list.size(); i) {E element list.get(i);// 1 - 可以调用元素的方法// 2 - 可以使用i去做一些基于下标的方法调用// ...
}循环的增强版本 (很好地回答了这个问题)
for (E element : list) {// 1 - 调用元素的方法// ...
}迭代器
for (IteratorE iter list.iterator(); iter.hasNext(); ) {E element iter.next();// 1 - 调用元素的方法// 2 - 可以用 iter.remove() 方法从list上移除当前元素// ...
}List迭代器
for (ListIteratorE iter list.listIterator(); iter.hasNext(); ) {E element iter.next();// 1 - 调用元素的方法// 2 - 可以用 iter.remove() 方法从list上移除当前元素// 3 - 可以用 iter.add(...) 在当前元素和下一个元素之间插入新元素// 4 -可以用iter.set(...) 取代当前元素// ...
}Java函数
list.stream().map(e - e 1); // 可以对e用一个转换函数
Iterable.forEach, Stream.forEach, …
来自Java的stream API的映射方法
在Java8集合实现了 Iterable接口的类型例如所有的list里面都要一个forEach的方法可以代替上面的循环语句使用了提供一个优秀的对比那就是另一个问题了
Arrays.asList(1,2,3,4).forEach(System.out::println);
// 1 - 调用元素的方法
// 2 - 需要一个里面元素的引用用来移除它们
//
// 3 - 从功能上分离迭代和发生在每一个元素上的行为Arrays.asList(1,2,3,4).stream().forEach(System.out::println);
// Same capabilities as above plus potentially greater utilization of parallelism
// 实现相同的功能上面的更加好因为使用了并行
// 注意因此执行的顺序是不能保证的
// 想了解更多关于这个的请看 [Stream.forEachOrdered][stream-foreach-ordered]
还有任何的其他方法吗? 顺便说一下我不是对提升性能感兴趣。作为一个开发人员我只是想知道什么方式是可用的而已
回答
一种JDK8风格的迭代:
public class IterationDemo {public static void main(String[] args) {ListInteger list Arrays.asList(1, 2, 3);list.stream().forEach(elem - System.out.println(element elem));}
}文章翻译自Stack Overflowhttps://stackoverflow.com/questions/18410035/ways-to-iterate-over-a-list-in-java