Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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/8/swift/17.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中的ArrayList_Java_Arrays_Arraylist - Fatal编程技术网

Java 搜索ArrayList中的ArrayList

Java 搜索ArrayList中的ArrayList,java,arrays,arraylist,Java,Arrays,Arraylist,在ArrayLists的ArrayList中搜索单个元素的最有效方法是什么?鉴于以下情况: ArrayList<ArrayList<Integer>> intList = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> a = new ArrayList<>(); a.add(1); a.add(2); ArrayList<Integer> b =

ArrayLists
ArrayList
中搜索单个元素的最有效方法是什么?鉴于以下情况:

ArrayList<ArrayList<Integer>> intList = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> a = new ArrayList<>();
a.add(1);
a.add(2);
ArrayList<Integer> b = new ArrayList<>();
b.add(3);
b.add(4);
intList.add(a);
intList.add(b);
ArrayList intList=new ArrayList();
ArrayList a=新的ArrayList();
a、 增加(1);
a、 增加(2);
ArrayList b=新的ArrayList();
b、 增加(3);
b、 增加(4);
增加(a);
增加(b);

如何搜索以查看
ArrayList
intList
是否包含特定的
整数,如
3

只需在所有列表中重复,并询问其中是否包含您的值

public boolean contains(int x, ArrayList<ArrayList<Integer>> listOfLists) {
    for (ArrayList list: listOfLists) {
        if (list.contains(x)) return true;
    }
    return false;
}
public boolean contains(int x,ArrayList列表){
for(ArrayList列表:ListofList){
if(list.contains(x))返回true;
}
返回false;
}

不过,我同意拉代的看法。可能需要更高效的数据结构,而不是高效的算法

只需在所有列表中迭代,并询问其中是否包含您的值

public boolean contains(int x, ArrayList<ArrayList<Integer>> listOfLists) {
    for (ArrayList list: listOfLists) {
        if (list.contains(x)) return true;
    }
    return false;
}
public boolean contains(int x,ArrayList列表){
for(ArrayList列表:ListofList){
if(list.contains(x))返回true;
}
返回false;
}

不过,我同意拉代的看法。可能需要更高效的数据结构,而不是高效的算法

我想不出有效的解决方案。如果你描述了更大的问题,也许可以找到更有效的数据结构?在整个二维阵列上循环是否足够有效?可能会help@Mureinik显然地这就是我问的原因。您可以尝试在主列表中循环,并在内部
ArrayList
中使用
contains()
方法。我想不出有效的解决方案。如果你描述了更大的问题,那么可以找到更有效的数据结构吗?在整个二维数组中循环是否足够有效?可能会help@Mureinik显然地这就是我问的原因。您可以尝试在主列表中循环,并在内部
ArrayList
中使用
contains()
方法。谢谢。我同意我可以制作一个更高效的数据结构,但在紧要关头,这很好。我不确定是否有一个我不知道的函数。@Adam_G对于整数列表未排序的一般情况,这是最好的办法。但是,如果每个
列表中碰巧填充了一个单调递增的序列,如示例所示,则可以将性能从O(n^2)提高到O(n log n)。如果没有两个
List
s具有重叠范围(同样,如您的示例所示),您可以将搜索性能提高到O(log n)。谢谢。我同意我可以制作一个更高效的数据结构,但在紧要关头,这很好。我不确定是否有一个我不知道的函数。@Adam_G对于整数列表未排序的一般情况,这是最好的办法。但是,如果每个
列表中碰巧填充了一个单调递增的序列,如示例所示,则可以将性能从O(n^2)提高到O(n log n)。如果没有两个
List
s具有重叠范围(同样,如您的示例中所示),您可以将搜索性能提高到O(log n)。