java hashlist,java – 在HashMap上添加List值

在Java 8中,您的整个代码可以像这样编写(如提出的其他精细答案):

Map> myHashMap = new HashMap();

for (Person person : persons) {

myHashMap.computeIfAbsent(age,age->new ArrayList()).add(person);

}

但是通过使用收集到带有Collectors.GroupingBy()的Map的流可以更短.

Map> myMap = persons.stream().collect(Collectors.groupingBy(Person:getAge));

作为旁注,您的实际Java 7代码也可以得到改进.

当然,没有Java 8那么多,但如果你不能使用Java 8,这可能会很有趣.

在您的实际代码中,这是重复的:

personsOfSameAge.add(person);

并且您使用两个条件语句(if和else),而只有在您首先处理特殊情况时才足够:在Map中没有值.

这是一个修改版本:

Map> myHashMap = new HashMap<>();

for (Person person : persons) {

int age = person.getAge();

List personsOfSameAge = myHashMap.get(age);

if (personsOfSameAge == null) {

personsOfSameAge = new ArrayList();

myHashMap.put(age, personsOfSameAge);

}

personsOfSameAge.add(person);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值