java中的集合有两种形式Collection<E>,Map<K,V>

Collection类型集合
在JAVA7中遍历有一下几种方式:
List<String> list = Arrays.asList("aaaa","bbbb");
//for循环
for (int i=0;i< list.size();i++){
System.out.println(list.get(i));
}

//增强for循环
for(String str : list){
System.out.println(str);
}
//迭代器
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}

在JAVA8中还可以使用forEach来遍历:

list.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});

发现和使用sort排序的写法是一样的:

Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});

发现代码量没有减少多少,那么我们在加上Lambda表达式,如下:

list.forEach(str-> System.out.println(str));
1
sort排序也使用Lambda表达式,如下:

Collections.sort(list,(o1,o2)->{return o1.compareTo(o2);});
1
Map类型集合
在JAVA7中遍历有下面几种方式:
Map<String,String> map = new HashMap<>();
map.put("id","11");
map.put("name","zhangsan");
map.put("age","30");
for (Map.Entry<String,String> entry : map.entrySet()){
System.out.println("k=" + entry.getKey() + ",v=" + entry.getValue());
}
for (String key : map.keySet()){
System.out.println("k=" + key + ",v=" + map.get(key));
}
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String, String> entry = iterator.next();
System.out.println("k=" + entry.getKey() + ",v=" + entry.getValue());
}
for (String v : map.values()){
System.out.println("v=" + v);
}

使用JAVA8的forEach遍历,如下:

map.forEach(new BiConsumer<String, String>() {
@Override
public void accept(String s, String s2) {
System.out.println("k=" + s + ",v=" + s2);
}
});

也可以使用Lambda表达式,如下:

map.forEach((k,v)-> System.out.println("v="+k+",v="+v));
1
本文中只使用forEach,没有使用JAVA8的Stream包。
注:例子中出现的Consumer和BiConsumer是JAVA8中新增的函数式接口,Consumer接口中只有一个无返回结果并且只有一个泛型参数的方法,源码如下:

BiConsumer接口中提供的是一个无返回结果并且有两个泛型参数的方法,源码如下:

最新文章

  1. Centos6安装Gitlab
  2. (转载)使用 udev 高效、动态地管理 Linux 设备文件
  3. OpenCv实现两幅图像的拼接
  4. sqlite创建表
  5. SQL2008 R2 主从数据库同步设置
  6. Programming Collective Intelligence
  7. 8.8-8.10 usaco
  8. spring.net AOP配置基础
  9. 再次写了第一个servlet
  10. css实现div中图片高度自适应并与父级div宽度一致
  11. Vue CLI 3.0脚手架如何在本地配置mock数据
  12. POI解析Excel代码
  13. 微信小程序——购物车数字加减
  14. 【刷题】BZOJ 3295 [Cqoi2011]动态逆序对
  15. 特殊汉字“&#146989;”引发的对于字符集的思考;mysql字符集;sqlalchemy字符集设置;客户端字符集设置;
  16. 微信企业号发送监控消息【php】
  17. MVVMLight - IOC Containers and MVVM
  18. PHP安装加载yaf扩展
  19. MySQL运算符总结
  20. dyci——IOS动态代码注入

热门文章

  1. JavaScript流程控制语句脑图
  2. Python函数(2)
  3. 服务器返回的14种常见HTTP状态码
  4. ansible软件相关模块丶计划任务,剧本
  5. python反爬之网页局部刷新1
  6. sharepoint2007就地升级2010系列(二)环境概述及升级前准备
  7. python模块详解 logging
  8. Selenium 元素查找
  9. yum第三方源
  10. shell去重