我想创建一个HashMap< String,Integer>来自现有的HashMap< String,Integer>通过对Map的键应用一些操作.
假设我有一个String->
String sampleString= "SOSSQRSOP";`
然后通过从下面的字符串中只取3个字符(将0作为值)创建一个hashmap:
Map messages= new HashMap<>();
messages.put("SOS",0);
messages.put("SQR",0);
messages.put("SOP",0);
实际任务是使用映射中的每个键从给定字符串“SOS”中查找不同字符的总数,并将no指定给每个键的值.
如下(最终结果):
Map messages= new HashMap<>();
messages.put("SOS",0);
messages.put("SQR",2);
messages.put("SOP",1);
所以我使用下面给出的流在java8中编写代码:
Map result= messages
.entrySet().stream()
.collect(Collectors.toMap(e-> e.getKey(),
e-> e.getKey().stream()
.forEach(x-> {
if(!"SOS".equals(x)){
char[] characters= {'S','O','S'};
char[] message= x.toCharArray();
for(int i=0; i< characters.length;i++){
int index=0;
if(characters[i] != message[i]){
messages.put(e.getKey(),++index);
}
}
}
});
));
我收到编译错误.任何人都可以帮助我使用流编写代码.
编辑:还请描述其他方法来做到这一点.在我的例子中,BTW需要从给定的字符串创建第一个hashmap.