四时宝库

程序员的知识宝库

集合遍历都有哪几招(集合遍历的方法)

作者:凯文 @开源Favorer

集合遍历是每一个JAVA程序员的基础必答题,花1分钟跟着小编一起来复习一下我们处理集合遍历都有哪些方法以及如何选择。

Map

方法一:entrySet()。这是平常用的最多也最可取的一种遍历方式

for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println("key=" + entry.getKey() + ",value=" + entry.getValue());

方法二:for循环keySet()或value。如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet,该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净

// 遍历key
for (String key : map.keySet()) {
System.out.println("key=" + key);
}
// 遍历value
for (Object value : map.values()) {
System.out.println("value=" + value);
}

方法三:Iterator。使用Iterator进行遍历Map

Iterator<Map.Entry<String, Object>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
Entry<String, Object> entry = entries.next();
System.out.println("key=" + entry.getKey() + ",value=" + entry.getValue());
}

方法四:for循环keySet再获取keyValue。通过键找值遍历,缺点,效率低,本身从键取值是耗时的操作

for (String key : map.keySet()) {
Object value = map.get(key);
System.out.println("key=" + key + ",value=" + value);
}

List

方法一:最基础的遍历方式:for循环,指定下标长度,使用List集合的size()方法,进行for循环遍历

for (int i = 0; i < list.size(); i++) {
 News s = (News)list.get(i);
 System.out.println(s.getId()+" "+s.getTitle()+" "+s.getAuthor());
}

方法二:较为简洁的遍历方式:使用foreach遍历List,但不能对某一个元素进行操作(这种方法在遍历数组和Map集合的时候同样适用)

for (News s : list) {
 System.out.println(s.getId()+" "+s.getTitle()+" "+s.getAuthor());
}

方法三适用迭代器Iterator遍历:直接根据List集合的自动遍历

Iterator<News> iter = list.iterator();
 while (iter.hasNext()) {
 News s = (News) iter.next();
 System.out.println(s.getId()+" "+s.getTitle()+" "+s.getAuthor());
}

Set

方法一: forEach

for (Integer i : sets)
{ System.out.print(i + " "); }

方法二: iterator

Iterator<Integer> iterator = sets.iterator(); 
while (iterator.hasNext()) {
  System.out.print(iterator.next() + " "); 
}

方法三: stream流

sets.forEach(s -> System.out.print(s + " "));

方法四:for循环

Iterator<Integer> iterator2 = sets.iterator();
for (int i = 0; i < sets.size(); i++)
{ System.out.print(iterator2.next() + " "); }

方法五:forEachRemaining。底层实现while (hasNext()) action.accept(next());

sets.iterator().forEachRemaining(s -> System.out.print(s + " "));

开源Favorer为读者提供了广泛的IT认证类辅导资料,欢迎点击领取「链接」

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接