我有两个字符串转换成hashmaps,第一个是用户给应用程序的输入。第二个是包含大量单词的数组。
我需要比较两个hashmap来检查输入是否可以重新组织以匹配数组中的一个字。不需要使用用户输入到系统的每个字符,第一个hashmap中可能有一些剩余字符,但我需要确保它们可以匹配数组中的一个单词(第二个hashmap)。
下面是我如何创建第一个hashmap:
String normalizedInputWord = normalizeString(inputWord);
Map<Character, Integer> countDuplicateMapInput = new HashMap<>();
char[] charInputArray = normalizedInputWord.toCharArray();
for (char c: charInputArray) {
if (countDuplicateMapInput.containsKey(c)) {
countDuplicateMapInput.put(c, countDuplicateMapInput.get(c) + 1);
} else {
countDuplicateMapInput.put(c, 1);
}
}
这是第二个:
Map<Character, Integer> countDuplicateMapArray = new HashMap<>();
for (int i = 0; i < 1; i++) {
// Calls a function to normalize each String of the wordArray Array
String normalizedWordArray = normalizeString(wordArray[i]);
char[] charWordArray = normalizedWordArray.toCharArray();
for (char c : charWordArray) {
if (countDuplicateMapArray.containsKey(c)) {
countDuplicateMapArray.put(c, countDuplicateMapArray.get(c) + 1);
} else {
countDuplicateMapArray.put(c, 1);
}
}
}
如何比较这两种结构,并得到下面示例的“真实”响应?
示例:输入为“不可阻挡”,countduplicatemapinput将具有:
{
key: "p", value: 2;
key: "a", value: 1;
key: "b", value: 1;
key: "s", value: 1;
key: "t", value: 1;
key: "u", value: 1;
key: "e", value: 1;
key: "l", value: 1;
key: "n", value: 1;
key: "o", value: 1;
}
在我的数组中有一个单词“stop”,它将以这种方式填充countduplicatemaparray:
{
key: "p", value: 1;
key: "t", value: 1;
key: "s", value: 1;
key: "o", value: 1;
}
1条答案
按热度按时间ndasle7k1#
要理解您的需求有点困难,但我认为您需要一个测试来检查第二个Map中的所有键在第一个Map中的值是否大于或等于第二个Map的值。
如果正确的话:
还请注意,您可以使用
merge
要简化创建Map的代码:或者更好的方法是直接从输入创建Map:
它使用
Integer
而不是Character
表示字符(通过对字符进行零扩展),但是如果您只是在 predicate 中使用它们,那么这对您来说没有任何区别。