jdk1.8后对集合的遍历方法更新

一、首先对Map集合的遍历方法

jdk1.7之前的遍历方法如下:

for (Map.Entry entry : ordermap.entrySet()) {
     System.out.println("key : " + entry.getKey() + " value : " + entry.getValue());
}

jdk1.8之后可以结合lambda表达式 

1、

// 循环,key,value
 map.forEach((k, v) -> { doSomething(k,v); });

2、

// 循环map中的values
map.values().forEach(System.out :: println);

3、

// Map.entrySet来遍历key,value, 大容量时推荐使用
map.entrySet().forEach(entry -> {
    System.out.println(entry.getKey());
    System.out.println(entry.getValue());
});

4、

// 使用iterator来遍历Map.entrySet
map.entrySet().iterator().forEachRemaining(iter -> {
    System.out.println(iter.getKey());
    System.out.println(iter.getValue());
});

5、

// 遍历key
map.keySet().forEach(key -> {
    System.out.println(key);
    System.out.println(map.get(key));
});

二、对list的遍历,在jdk1.8也做了简化,也是配合lambda表达式

list.forEach(str -> {
            if ("C".equals(str)) {
                str = "我是C";
            }
            System.out.println(str);
});

三、对list的分组操作

java8之前List分组

假设有个student类,有id、name、score属性,list集合中存放所有学生信息,现在要根据学生姓名进行分组。

public Map> groupList(List students) {
    Map> map = new Hash<>();
    for (Student student : students) {
        List tmpList = map.get(student.getName());
        if (tmpList == null) {
            tmpList = new ArrayList<>();
            tmpList.add(student);
            map.put(student.getName(), tmpList);
        } else {
            tmpList.add(student);
        }
    }
    return map;
}

java8的List分组

public Map> groupList(List students) {
    Map> map = students.stream().collect(Collectors.groupingBy(Student::getName));
    return map;
}

 

 

你可能感兴趣的:(java)