Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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中查找整数对的数目_Java_Arraylist - Fatal编程技术网

Java 在ArrayList中查找整数对的数目

Java 在ArrayList中查找整数对的数目,java,arraylist,Java,Arraylist,最近遇到黑客挑战,在给定数组中找到int对。 使用ArrayList作为一种方法。 有人能纠正这段代码中的错误吗 错误:线程“main”java.lang.IndexOutOfBoundsException中出现异常:索引:10,大小:9 位于java.util.ArrayList.rangeCheck(ArrayList.java:653) 在java.util.ArrayList.remove处(ArrayList.java:492) 位于Solution.main(Solution.jav

最近遇到黑客挑战,在给定数组中找到int对。 使用ArrayList作为一种方法。 有人能纠正这段代码中的错误吗

错误:线程“main”java.lang.IndexOutOfBoundsException中出现异常:索引:10,大小:9

位于java.util.ArrayList.rangeCheck(ArrayList.java:653)

在java.util.ArrayList.remove处(ArrayList.java:492)

位于Solution.main(Solution.java:32)

这将检索位置i处的值

ch.remove(a);
这将删除存储在索引
a
中的值。值
a
可能大于ArrayList大小

这就是你错的地方。试着注释一下,如果有人需要不同的方法来查找arraylist中的总对数,那么它可能会起作用。
//if some one needs a different approach to find total number of pairs in a arraylist.    
int pair=0;
            List<Integer> list = new ArrayList<Integer>();//your input



    Set<Integer> uniqueSet = new HashSet<Integer>(list);
        for (Integer temp : uniqueSet) {
            System.out.println(temp + ": " + Collections.frequency(list, temp));



            if(Collections.frequency(list, temp)==2|| Collections.frequency(list, temp)>2)
            {
     int t=Collections.frequency(list, temp)/2;
     pair=pair+t;
            }


        }
        return pair;
int对=0; 列表=新的ArrayList()//你的意见 Set uniqueSet=新哈希集(列表); 用于(整数温度:唯一设定){ System.out.println(temp+“:”+Collections.frequency(list,temp)); if(Collections.frequency(list,temp)==2 | | Collections.frequency(list,temp)>2) { int t=集合频率(列表、临时)/2; 配对=配对+t; } } 返回对;
如果
a=ch.get(i)
,什么会阻止
b
等于
i
?错误将发生在此行
ch.remove(a)就像在程序中一样
a
可以是一个大于
Arraylist
大小的数字。任何其他替代方法都可以从数组中删除元素,以免妨碍搜索。另外,我正在删除元素,这样它们就不会以另一个递归对的方式出现。我使用的方法是,如果我们有一对元素,我们将删除该对,以再次开始查找和删除的过程。这样,就消除了寻找递归对的可能性。
int a = ch.get(i);
ch.remove(a);
//if some one needs a different approach to find total number of pairs in a arraylist.    
int pair=0;
            List<Integer> list = new ArrayList<Integer>();//your input



    Set<Integer> uniqueSet = new HashSet<Integer>(list);
        for (Integer temp : uniqueSet) {
            System.out.println(temp + ": " + Collections.frequency(list, temp));



            if(Collections.frequency(list, temp)==2|| Collections.frequency(list, temp)>2)
            {
     int t=Collections.frequency(list, temp)/2;
     pair=pair+t;
            }


        }
        return pair;