Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList到HashMap函数的行为异常_Java_Arraylist_Hashmap - Fatal编程技术网

Java ArrayList到HashMap函数的行为异常

Java ArrayList到HashMap函数的行为异常,java,arraylist,hashmap,Java,Arraylist,Hashmap,因此,我正在研究在数组列表中查找两个最常见元素的最佳方法 我的方法是将整个过程转化为hashmap,然后看看哪一个是最好的。因为我喜欢hashmaps。他们似乎是一个很好的解决方法,我没能想出更好的解决办法 除了我得到一个错误。这就是你进来的地方 公共静态字符串[]findTwo(ArrayList param){ Map counter=newhashmap(); 对于(int i=0;i

因此,我正在研究在数组列表中查找两个最常见元素的最佳方法

我的方法是将整个过程转化为hashmap,然后看看哪一个是最好的。因为我喜欢hashmaps。他们似乎是一个很好的解决方法,我没能想出更好的解决办法

除了我得到一个错误。这就是你进来的地方

公共静态字符串[]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.Not
      counter.get(i)
      counter.get(param.get(i))
      。在循环的顶部,执行类似于
      String-nextString=param.get(i)
      的操作,以后就不会对您使用的IDE或编译器感到困惑了
      应该引发一个错误或警告,因为我不是一个字符串。这个错误将帮助您找到修复方法。eclipse!!!aaahhh lolDude.not
      counter.get(i)
      counter.get(param.get(i))
      。在循环的顶部,执行类似于
      String nextString=param.get(i)的操作
      ,以后您就不会对您使用的IDE或编译器感到困惑了?
      计数器。get(i)
      应该会引发一个错误或警告,因为我不是字符串。该错误将帮助您找到修复方法。eclipse!!!aaahhh lolHow does
      counter.get(i)
      即使是编译,因为计数器被定义为
      映射
      ?应该是一个编译器错误或警告。@user949300因为接收
      对象
      ,而
      i
      int
      自动装箱到
      整数
      (这是
      对象
      ).Hmm,看起来像
      Map.put()
      检查参数和泛型,但不检查
      Map.get()
      。有趣的晦涩知识。有人知道为什么吗?还有另一个自动装箱奇怪的例子。@user949300我不会说它晦涩难懂,因为它是在网上记录和发布的。至少,它不符合最不令人惊讶的原则。我只是阅读了来自的评论和链接,它非常晦涩!如何
      counter.get(I)
      即使是编译,因为计数器被定义为
      映射
      ?应该是一个编译器错误或警告。@user949300因为接收
      对象
      ,而
      i
      int
      自动装箱到
      整数
      (这是
      对象
      ).Hmm,看起来像
      Map.put()
      检查参数和泛型,但不检查
      Map.get()
      。有趣的晦涩知识。有人知道为什么吗?还有另一个自动装箱奇怪的例子。@user949300我不会说它晦涩难懂,因为它是在线记录和发布的。至少,它不符合最不令人惊讶的原则。我只是阅读了来自的评论和链接,它非常晦涩!