java8 特性 - map

map 是 转化的意思,

1.将一个类转化为另一个类

例如这里有两个实体类 一个是 animal 一个是 toy

@Data
@AllArgsConstructor
public class Animal {
    private String name;
    private Integer age;
}


@Data
public class Toy {
    private String name;
}

初始化一个 animal的list

List animals = Lists.newArrayList ();
animals.add (new Animal ("cat",12));
animals.add (new Animal ("dog",20));
animals.add (new Animal ("wolf",5));

先来一个简单的例子,将提取animal 的一个属性将 List map 成 List

List nameList = animals.stream().map(t-> t.getName()).collect(Collectors.toList());
System.out.println(nameList);

结果

[cat, dog, wolf]

将 List map 成 List

List toys = animals.stream().map(t-> {
            Toy toy = new Toy();
            toy.setName(t.getName());
            return toy;
        }).collect(Collectors.toList());

System.out.println(toys);

结果

[Toy(name=cat), Toy(name=dog), Toy(name=wolf)]

在java web 应用中经常会将从数据库中查到的 entity 转变成vo 类,应用此方法就挺方便。

将list 转化为 map

Map animalMap = animals.stream().collect(Collectors.toMap(t->t.getName(), t->t));
System.out.println(animalMap);

{wolf=Animal(name=wolf, age=5), cat=Animal(name=cat, age=12), dog=Animal(name=dog, age=20)}

倘若map的主键重名会报如下错误
java.lang.IllegalStateException: Duplicate key

可以结合业务需求,这里如果重复了返回第一个

Map animalMap = animals.stream()
                .collect(Collectors.toMap(t->t.getName(), t->t,(x,y)->x));
``

你可能感兴趣的:(java8 特性 - map)