Java ArrayList到HashMap函数的行为异常
因此,我正在研究在数组列表中查找两个最常见元素的最佳方法 我的方法是将整个过程转化为hashmap,然后看看哪一个是最好的。因为我喜欢hashmaps。他们似乎是一个很好的解决方法,我没能想出更好的解决办法 除了我得到一个错误。这就是你进来的地方Java ArrayList到HashMap函数的行为异常,java,arraylist,hashmap,Java,Arraylist,Hashmap,因此,我正在研究在数组列表中查找两个最常见元素的最佳方法 我的方法是将整个过程转化为hashmap,然后看看哪一个是最好的。因为我喜欢hashmaps。他们似乎是一个很好的解决方法,我没能想出更好的解决办法 除了我得到一个错误。这就是你进来的地方 公共静态字符串[]findTwo(ArrayList param){ Map counter=newhashmap(); 对于(int i=0;i
公共静态字符串[]findTwo(ArrayList param){
Map counter=newhashmap();
对于(int i=0;icounter.get(i)==null
应该是counter.get(param.get(i))
计数器(i)
编译的原因是接收一个对象
,i
从int
自动装箱到整数
(这是一个对象
)
更好的方法是在列表参数上使用增强的进行循环迭代:
for(String parameter : param) {
if (!counter.containsKey(parameter)) {
//logic key is not present...
} else {
//logic when key is present...
}
}
另外,开始面向接口而不是直接面向类实现的编程。使用List
支持的ArrayList
:
public static String[] findTwo(List<String> param) {
//...
}
公共静态字符串[]findTwo(列表参数){
//...
}
更多信息:
计数器.get(i)=null
应该是计数器.get(param.get(i))
计数器(i)
编译的原因是接收一个对象
,i
从int
自动装箱到整数
(这是一个对象
)
更好的方法是在列表参数上使用增强的进行循环迭代:
for(String parameter : param) {
if (!counter.containsKey(parameter)) {
//logic key is not present...
} else {
//logic when key is present...
}
}
另外,开始面向接口而不是直接面向类实现的编程。使用List
支持的ArrayList
:
public static String[] findTwo(List<String> param) {
//...
}
公共静态字符串[]findTwo(列表参数){
//...
}
更多信息:
问题出在这里
更改以下代码行
System.out.println(counter.get(i) + "<-- should be 1");
System.out.println(counter.get(i)+“问题出在这里
更改以下代码行
System.out.println(counter.get(i) + "<-- should be 1");
System.out.println(counter.get(i)+“Dude.Notcounter.get(i)
counter.get(param.get(i))
。在循环的顶部,执行类似于String-nextString=param.get(i)
的操作,以后就不会对您使用的IDE或编译器感到困惑了
应该引发一个错误或警告,因为我不是一个字符串。这个错误将帮助您找到修复方法。eclipse!!!aaahhh lolDude.notcounter.get(i)
counter.get(param.get(i))
。在循环的顶部,执行类似于String nextString=param.get(i)的操作
,以后您就不会对您使用的IDE或编译器感到困惑了?计数器。get(i)
应该会引发一个错误或警告,因为我不是字符串。该错误将帮助您找到修复方法。eclipse!!!aaahhh lolHow doescounter.get(i)
即使是编译,因为计数器被定义为映射
?应该是一个编译器错误或警告。@user949300因为接收对象
,而i
从int
自动装箱到整数
(这是对象
).Hmm,看起来像Map.put()
检查参数和泛型,但不检查Map.get()
。有趣的晦涩知识。有人知道为什么吗?还有另一个自动装箱奇怪的例子。@user949300我不会说它晦涩难懂,因为它是在网上记录和发布的。至少,它不符合最不令人惊讶的原则。我只是阅读了来自的评论和链接,它非常晦涩!如何counter.get(I)
即使是编译,因为计数器被定义为映射
?应该是一个编译器错误或警告。@user949300因为接收对象
,而i
从int
自动装箱到整数
(这是对象
).Hmm,看起来像Map.put()
检查参数和泛型,但不检查Map.get()
。有趣的晦涩知识。有人知道为什么吗?还有另一个自动装箱奇怪的例子。@user949300我不会说它晦涩难懂,因为它是在线记录和发布的。至少,它不符合最不令人惊讶的原则。我只是阅读了来自的评论和链接,它非常晦涩!