Map接口

Map是可以匹配键值的对象,一个map不能包含重复的键, 一个键最多匹配一个值。Map是对数学上函数的一种抽象建模,map接口包含的方法分为基本操作(例如 put, get, remove, containsKey, containsValue, size, 和 empty)、批量操作(putAllclear)和集合视图(keySet, entrySet, 和values)。

Java有三种map的通用实现:HashMap, TreeMap以及LinkedHashMap

接下来的篇幅我们就要详细描述map接口了。不过,我们首先来看几个在JDK 8里面是怎么样用聚合操作操纵Map的例子。模拟现实世界中的事物是面向对象经常做的事,那么我们就先来看看如果把员工按部门分类。

// Group employees by department
Map<Department, List<Employee>> byDept = employees.stream()
.collect(Collectors.groupingBy(Employee::getDepartment));

按照部门加总薪水

// Compute sum of salaries by department
Map<Department, Integer> totalByDept = employees.stream()
.collect(Collectors.groupingBy(Employee::getDepartment,
Collectors.summingInt(Employee::getSalary)));

按照过不过级把学生分类

// Partition students into passing and failing
Map<Boolean, List<Student>> passingFailing = students.stream()
.collect(Collectors.partitioningBy(s -> s.getGrade()>= PASS_THRESHOLD));

把人们按城市分类

// Classify Person objects by city
Map<String, List<Person>> peopleByCity
         = personStream.collect(Collectors.groupingBy(Person::getCity));

甚至还可以把两个集合连接起来,把人们按省和城市分类:

// Cascade Collectors 
Map<String, Map<String, List<Person>>> peopleByStateAndCity
  = personStream.collect(Collectors.groupingBy(Person::getState,Collectors.groupingBy(Person::getCity)))

这是利用JDK 8新的API的例子,但是只是很少的一部分。如果你想了解理解的Lamba表达式和聚合操作,请看这里 聚合操作

Map接口的基本操作

http://docs.oracle.com/javase/tutorial/collections/interfaces/map.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值