java 8 流map_Java 8流到Map>

博客讨论了在Java8中使用流处理List<Person>对象并创建一个Map,根据年龄分组Person对象的姓名和薪水。通过使用Function生成Map,成功输出了不同年龄段的键值对,但遇到了将Map<Integer, String>转换为Map<Integer, List<String>>的问题,导致编译错误。尝试使用Collectors.toMap方法时,出现了未解析的编译问题。
摘要由CSDN通过智能技术生成

这是

Java 8流中要处理的

Java对象

private static List getPersons() {

List results = new ArrayList();

results.add(new Person("Elsdon", "Jaycob", "Java programmer", "male", 43, 2000));

results.add(new Person("Tamsen", "Brittany", "Java programmer", "female", 23, 1500));

results.add(new Person("Floyd", "Donny", "Java programmer", "male", 33, 1800));

results.add(new Person("Sindy", "Jonie", "Java programmer", "female", 32, 1600));

results.add(new Person("Vere", "Hervey", "Java programmer", "male", 22, 1200));

results.add(new Person("Maude", "Jaimie", "Java programmer", "female", 27, 1900));

results.add(new Person("Shawn", "Randall", "Java programmer", "male", 30, 2300));

results.add(new Person("Jayden", "Corrina", "Java programmer", "female", 35, 1700));

results.add(new Person("Palmer", "Dene", "Java programmer", "male", 33, 2000));

results.add(new Person("Addison", "Pam", "Java programmer", "female", 34, 1300));

results.add(new Person("Jarrod", "Pace", "PHP programmer", "male", 34, 1550));

results.add(new Person("Clarette", "Cicely", "PHP programmer", "female", 23, 1200));

results.add(new Person("Victor", "Channing", "PHP programmer", "male", 32, 1600));

results.add(new Person("Tori", "Sheryl", "PHP programmer", "female", 21, 1000));

results.add(new Person("Osborne", "Shad", "PHP programmer", "male", 32, 1100));

results.add(new Person("Rosalind", "Layla", "PHP programmer", "female", 25, 1300));

results.add(new Person("Fraser", "Hewie", "PHP programmer", "male", 36, 1100));

results.add(new Person("Quinn", "Tamara", "PHP programmer", "female", 21, 1000));

results.add(new Person("Alvin", "Lance", "PHP programmer", "male", 38, 1600));

results.add(new Person("Evonne", "Shari", "PHP programmer", "female", 40, 1800));

return results;

}

我生成了具有键值“age”的Map对象.这是代码

Function> nameNsalary = (Person p) -> {

Map map = new HashMap();

if (p.getAge()>=40)

map.put(40 , p.getFirstName() + " " + p.getLastName() +":" + p.getSalary());

else if(p.getAge()>=30 && p.getAge()<40)

map.put(30 , p.getFirstName() + " " + p.getLastName() +":" + p.getSalary());

else if(p.getAge()<20)

map.put(20 , p.getFirstName() + " " + p.getLastName() +":" + p.getSalary());

else

map.put(10 , p.getFirstName() + " " + p.getLastName() +":" + p.getSalary());

return map;

};

persons.stream().map(nameNsalary).forEach(System.out::println);

输出地图对象成功如下,

{40=Elsdon Jaycob:2000}

{20=Tamsen Brittany:1500}

{30=Floyd Donny:1800}

{30=Sindy Jonie:1600}

{20=Vere Hervey:1200}

{20=Maude Jaimie:1900}

{30=Shawn Randall:2300}

{30=Jayden Corrina:1700}

{30=Palmer Dene:2000}

{30=Addison Pam:1300}

{30=Jarrod Pace:1625}

{20=Clarette Cicely:1260}

{30=Victor Channing:1680}

{20=Tori Sheryl:1050}

{30=Osborne Shad:1155}

{20=Rosalind Layla:1365}

{30=Fraser Hewie:1155}

{20=Quinn Tamara:1050}

{30=Alvin Lance:1680}

{40=Evonne Shari:1890}

但我无法从Map< Integer,String>更改输出类型映射>,例如,

30 = [Jayden Corrina:1700, Palmer Dene:2000, Addison Pam:1300]

我不知道如何将这些Map对象数据处理为Map< Int,List< String>>.我做了这个代码,

Map> result = persons.stream().map(nameNsalary)

.collect(Collectors.toMap(mapper -> (Integer)mapper.getKey(), mapper -> mapper.getValue()));

但是此代码抛出以下异常

Exception in thread "main" java.lang.Error: Unresolved compilation problems:

Type mismatch: cannot convert from Map to Map>

The method getKey() is undefined for the type Map

The method getValue() is undefined for the type Map

我坚持这个程序.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值