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

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

在 Java 中將流轉換為字符串

在 Java 中將流轉換為字符串

慕斯709654 2023-03-09 10:59:07
我想將 Map<> 的 Stream 轉換為 String,并將其附加到 textArea。我嘗試了一些方法,最后一個是使用 StringBuilder,但它們不起作用。public <K, V extends Comparable<? super V>> String sortByAscendentValue(Map<K, V> map, int maxSize) {    StringBuilder sBuilder = new StringBuilder();    Stream<Map.Entry<K,V>> sorted =            map.entrySet().stream()               .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()));    BufferedReader br = new BufferedReader(new InputStreamReader((InputStream) sorted));    String read;    try {        while ((read=br.readLine()) != null) {            //System.out.println(read);            sBuilder.append(read);        }    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    sorted.limit(maxSize).forEach(System.out::println);    return sBuilder.toString();}
查看完整描述

3 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

您可以按如下方式將條目收集到一個條目中String

  String sorted =
        map.entrySet().stream()
           .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
           .map(e-> e.getKey().toString() + "=" + e.getValue().toString())
           .collect(Collectors.joining (","));


查看完整回答
反對 回復 2023-03-09
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

考慮對@Eran的代碼進行細微更改,因為它已經為您HashMap.Entry.toString()加入了:=

String sorted =
    map.entrySet().stream()
        .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
        .map(Objects::toString)
        .collect(Collectors.joining(","));


查看完整回答
反對 回復 2023-03-09
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

這很容易做到,您可以使用 Steams API 來做到這一點。首先,您將映射中的每個條目映射到單個字符串 - 鍵和值的串聯字符串。一旦有了它,您就可以簡單地使用reduce()方法或collect()方法來完成它。


使用“reduce()”方法的代碼片段將如下所示:


    Map<String, String> map = new HashMap<>();

    map.put("sam1", "sam1");

    map.put("sam2", "sam2");


    String concatString = map.entrySet()

        .stream()

        .map(element-> element.getKey().toString() + " : " + element.getValue().toString())

        .reduce("", (str1,str2) -> str1 + " , " + str2).substring(3);


    System.out.println(concatString);

這將為您提供以下輸出:


sam2 : sam2 , sam1 : sam1

您還可以使用collect()' method instead ofreduce()` 方法。它看起來像這樣:


    String concatString = map.entrySet()

            .stream()

            .map(element-> element.getKey().toString() + " : " + element.getValue().toString())

            .collect(Collectors.reducing("", (str1,str2) -> str1 + " , " + str2)).substring(3);

兩種方法都提供相同的輸出。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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