在使用Stream把List转化为Map的时候,抛出了java.lang.IllegalStateException: Duplicate key异常,原因在于生成Map的key出现冲突。
查看如下代码:
当我们根据猫的名字创建名称Map的时候,发现有2个相同的cat2,导致了产生IllegalStateException异常
package com.bytrees.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.junit.Assert;
import org.junit.Test;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
public class StreamMapUniqTest {
@Test
public void uniqTest() {
List<Cat> catList = new ArrayList<>();
catList.add(new Cat(1, "cat1"));
catList.add(new Cat(2, "cat2"));
catList.add(new Cat(3, "cat2"));
Map<String, Cat> catMap2 = catList.stream().collect(Collectors.toMap(Cat::getName, val -> val));
Assert.assertTrue(catMap2.size() == 2);
}
@Getter
@Setter
@AllArgsCons