//str = "seer421dks2sd3ov51,.'[js341"
public static Map cal(String str, int target){
Map ret = new HashMap();
str.chars().filter(e -> e >= '0' && e - '0' <= i).mapToObj(e -> Integer.valueOf(e - '0')).collect(Collectors.collectingAndThen(Collectors.toMap(k -> k, k -> k, (k1, k2) -> {
//使用HashMap装载元素,对重复元素判断是否符合条件
if (k1 + k1 == i && !ret.containsKey(k1)) {
ret.put(k1, k1);
};
return k1;
}), map -> {
//对重组后的HashMap计算
map.keySet().parallelStream().forEach(e -> {
Integer elseNum = i - e;
//判断是否存在并去重
if (map.containsKey(elseNum) && !ret.containsKey(elseNum)) {
ret.put(e, elseNum);
}
});
return ret;
}));
return ret;
}
从一字符串中找出两数字相加为*的所有组合