我喜欢这种功能风格。所以想使用Java-8将String
转换为Map<Position, Character>
(如果可以在java-8中完成)。其中:
键 应为字符Position
,
值 应该Character
忽略空格。
String str = "a b c\nc d e\na b c"; // note \n (new line)
Map<Position, Character> map;
// key value
// (0,0) 'a'
// (0,1) 'b' <= skip spaces
// (0,2) 'c'
// (1,0) 'c' <= reset at new line
// ...
// (2,2) 'c'
到目前为止,我想出了这样的smth(可能是错的):
map = str.chars()
.filter(ch -> ch != ' ')
.reduce((Map<Position, Character> m, int ch) -> {
// put magic here.
m.put(new Position(x, y), ch);
});
很抱歉,如果问了类似的问题,但我的1小时搜索没有给我足够明确的答案。
答案 0 :(得分:0)
这是一个选项:
Map<Integer, Char> stringMap = IntStream.range(0, str.length()).filter(x -> ! str[x].equals(' ')).collect(Collectors.toMap(x -> x, y -> str[y])
// Code should be something like this. Not sure it compiles as is
我的java有点生疏,但我认为语法仍然有效。
我有点担心你为什么要这样做而不使用String::charAt
。你在寻找可变性吗? Java Strings针对内存效率进行了优化