亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java Stream Api 逆向數據結構與規范化變量

Java Stream Api 逆向數據結構與規范化變量

蝴蝶不菲 2023-03-02 10:15:35
我有一個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}
查看完整描述

1 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

擁有:


List<Home> homeList = ....;

... your work ...

Map<String, Long> barcodeNumberMap = ...;

那么第一個問題應該是如何填充最終的地圖。這是通過一個.collect(Collectors.toMap(keyGetter, valueGetter)).


Map<String, Long> result =

    some obj stream of string and long

    .collect(Collectors.toMap(obj::getString, obj::getLong);

然后是homeListHome:一個又長又多的Strings,一定要壓平。哪個 basicall 會將每 20 個 String 的 10 個 Home 壓平為 200 對 long 和 String??赡軙僭O每個 String 值都是唯一的。


AStream<Pair<String, long>>會做為


homeList.stream()

    .flatMap(home ->

         home.addressList.stream()

                          .map(addr -> Pair<String, Long>(addr, list.number)));

有一個適用于內部 Home 到外部的作品:一個 Home 可以變成一個Stream<Pair<String, Long>>flatMap 然后扁平化多個流。


由于這似乎是家庭作業,我就到此為止。


查看完整回答
反對 回復 2023-03-02
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號