在我的程序中,我有类似测试#6的错误:leastcommon({})exp。异常:第16行堆栈跟踪上的IllegalArgumentExceptionyour exceptionNoSuchElementException:NoSuchElementException LestCommon,第16行结果:fail
public static int leastCommon(Map<String, Integer> map) {
Map<Integer, Integer> result = new TreeMap<Integer, Integer>();
Iterator<String> i = map.keySet().iterator();
while (i.hasNext()) {
int num = map.get(i.next());
if (result.containsKey(num)) {
result.put(num, result.get(num) + 1);
} else {
result.put(num, 1);
}
}
Set<Integer> setKey = result.keySet();
Iterator<Integer> i1 = setKey.iterator();
int min = i1.next();
while(i1.hasNext()) {
int current = i1.next();
if (result.get(current) < result.get(min)) {
min = current;
}
}
return min;
}
如何用我的程序修正?
当输入映射为空且min=i1.next()
试图查找某些内容时,似乎会出现此问题。
这可以通过简单地检查/断言输入参数来解决,并且可能值得返回integer
,而不是取消装箱到基元int
:
public static Integer leastCommon(Map<String, Integer> map) {
if (null == map || map.isEmpty()) {
return null; // or throw IllegalArgumentException
}
// ... keep the rest of the code
}
但是,使用流API解决此任务会更简单,使用Collectors.GroupingBy
和Collectors.counting
计算输入映射中每个值的频率,并查找频率较低的条目:
java prettyprint-override">public static Integer leastCommon(Map<String, Integer> map) {
if (null == map) return null;
return map.values().stream()
.collect(Collectors.groupingBy(x -> x, Collectors.counting()))
.entrySet().stream()
.min(Map.Entry.comparingByValue())
.map(Map.Entry::getKey)
.orElse(null);
}
我的任务是使用HashMaps和set制作同义词词典。我的主要方法中有以下代码: 插入同义词和键的一种方法: 显示ArrayList的一种方法: 我想找到一个单词的所有同义词,例如单词“camin”。我写了下面的方法来做这件事,但是它不起作用,它返回一组空的键: 问题是在这里面,如果: 是数组列表和字符串之间的比较。我不知道如何纠正它。
问题内容: 我有这样的桌子设计 并希望通过查询返回属于部门a和b的所有person_id。我认为这可能与 但不能完全弄清楚。有人知道我该怎么做吗? 编辑:我想我可以执行以下操作。但这似乎是一种hack。 问题答案: 注意:仅当一个人可以多次成为同一部门的成员时,才需要使用DISTINCT。
这个问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这一问题的解决方式不太可能帮助未来的读者。 我试图在HashMap中找到字符串,该字符串对于给定的单词有一个子字符串。在我的代码中,输出是“1 2 3 4”(所有索引)。输出应为“2 3”。
本文向大家介绍查找图的匹配数,包括了查找图的匹配数的使用技巧和注意事项,需要的朋友参考一下 问题陈述 下图的匹配数字是多少? 解 顶点数= 9 我们只能匹配8个顶点。 匹配号码为4。
在我的一个程序中,我有以下方法,允许用户在ArrayList中输入与笔记本电脑关联的唯一ID。 所需输出如下: 如果用户输入的ID与ArrayList中的ID匹配,笔记本电脑及其规格将打印出来 如果ID不匹配,它将打印出“无效ID” 我非常接近实现这一目标;然而,我只能弄清楚如何让它打印出是否匹配列表中的每台笔记本电脑。例如,如果用户输入的ID与列表中三台笔记本电脑中的一台匹配,它将按如下方式打印
我很难在hashmap中的字符串数组中找到一个元素。我有一个字符串,它确实在这个String[]里面,但执行以下操作不起作用。 我的目标是在找到值的地方找到我的HashMap的对应键。 以我的地图示例为例: 如果搜索字符串,我希望有一个新的字符串数组,它将是: 我也尝试使用,但没有成功。 我做错了吗?谢谢!