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)。