使用流

时间:2018-07-17 09:54:28

标签: java java-8 java-stream

因此,我有一个由自动生成的符号组成的单词列表。例如:hqst。我将这个单词的每个符号转换为unicode并将其连接成点.,如下所示:104.113.115.116

我写下一个lambda:

.map(word -> {
    char[] symbols = word.toCharArray();
    StringBuilder newWord = new StringBuilder();

    for (int i = 0; i < symbols.length; i++) {
        newWord.append((int) symbols[i]).append(".");
        if (i == symbols.length - 1) {
            newWord = new StringBuilder(newWord.substring(0, i));
        }
    }
    return newWord.toString();
})

是否可以使用流API重写此匿名方法?

2 个答案:

答案 0 :(得分:4)

是的。您可以使用String::chars从单词中获取IntStream,然后将每个int映射到String并使用joining collector进行收集:

.map(word -> word.chars()
                 .mapToObj(Integer::toString)
                 .collect(Collectors.joining("."))
)

答案 1 :(得分:0)

假设单词根据提供的样本值作为整数值存储在列表中(因为您没有提供完整的代码段)。我相信这会有所帮助。

 public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    list.add(104);
    list.add(113);
    list.add(115);
    list.add(116);
   String str =  list.stream().map(word->word.toString()).collect(Collectors.joining( "." ));
   System.out.println(str);
}