我有一个Home类。有一个此类的数组,我必须像Map<AddressList, Number>使用 java stream api 一样转换此数据结构。Number对于同一对象中的每个地址,值将重复Home。我该怎么做?谢谢。
class Home {
private Long number;
private List<String> addressList;
// getters, setters, constructor
}
class AnotherClass {
List<Home> homeList = ....;
// do something here and result
Map<String, Long> barcodeNumberMap = ...;
}
解决方案
感谢您的回复。最后代码;
public void test() {
List<Home> homeList = new ArrayList<>();
Home h = new Home();
List<String> barcode1List = new ArrayList<String>();
barcode1List.add("b11");
barcode1List.add("b12");
h.setBarcodeList(barcode1List);
h.setNumber(100L);
Home h2 = new Home();
List<String> barcode2List = new ArrayList<String>();
barcode2List.add("b21");
barcode2List.add("b22");
h2.setBarcodeList(barcode2List);
h2.setNumber(200L);
homeList.add(h);
homeList.add(h2);
Map<String, Long> resultMap = homeList.stream()
.flatMap(home -> home.getBarcodeList().stream()
.map(addr -> new SimpleEntry<String, Long>(addr, home.getNumber())))
.collect(Collectors.toMap(SimpleEntry::getKey, SimpleEntry::getValue));
System.out.println(resultMap);
}
和输出:
{b21=100, b12=200, b11=200, b22=100}
蝴蝶不菲
烙印99
随时随地看视频慕课网APP
相关分类