Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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 多维数组列表索引?_Java_Arraylist_Multidimensional Array_Indexof - Fatal编程技术网

Java 多维数组列表索引?

Java 多维数组列表索引?,java,arraylist,multidimensional-array,indexof,Java,Arraylist,Multidimensional Array,Indexof,我在查找多维数组列表中的一些数据时遇到问题。我基本上有一个充满arraylist的arraylist ArrayList<ArrayList<Integer>> array = new ArrayList<ArrayList<Integer>>(); 但我不确定:(不幸的是,这是不可能的。除此之外 array.indexOf(array.get(????).get(0)) 是不正确的,因为array.get(??).get(0)将是一个整数,a

我在查找多维数组列表中的一些数据时遇到问题。我基本上有一个充满arraylist的arraylist

ArrayList<ArrayList<Integer>> array = new ArrayList<ArrayList<Integer>>();

但我不确定:(

不幸的是,这是不可能的。除此之外

array.indexOf(array.get(????).get(0))

是不正确的,因为
array.get(??).get(0)
将是一个整数,
array
ArrayList
s的
ArrayList,而不是
Integer
s。是否可以使用外部库?如果是,则定义Iterables.indexOf(Iterable,谓词)

然后可以按如下方式查找数组:

final int whatYoureLookingFor = 1232;
int index = Iterables.indexOf(array, new Predicate<ArrayList<Integer>>() {
        public boolean apply(ArrayList<Integer> a) {
             return a.contains(whatYoureLookingFor);
        }
    });
final int whatYoureLookingFor=1232;
int index=Iterables.indexOf(数组,新谓词(){
公共布尔应用(ArrayList a){
返回a.contains(您的目标是什么);
}
});

首先我们需要一个坐标容器。然后我们需要一个查找方法。这两个方法都使用工厂方法。然后您可以向多索引传递一个列表,它将在那里检索值

class MultiIndex<E> {

    static <E> MultiIndex<E> indexOf(List<List<E>> list, E e) {
        for(int i = 0; i < list.length; i++) {
            List<E> in = list.get(i);
            int index = in.indexOf(e);
            if(index > -1) return new MultiIndex(i,index);
        }
        return null;
    }
    int outside;
    int inside;
    private MultiIndex(int out, int in) {
        outside = out;
        inside = in;
    }

    E get(List<List<E>> list) {
        return list.get(outside).get(inside);
    }
}
类多索引{
静态多索引索引OF(列表,E){
for(int i=0;i-1)返回新的多索引(i,索引);
}
返回null;
}
int外部;
内部为int;
专用多索引(int-out,int-in){
外部=外部;
内=内;
}
E get(列表){
返回列表。获取(外部)。获取(内部);
}
}

我认为在这里使用indexOf的唯一方法是在for循环内。你在寻找什么对象?数组中的a是什么。在第二个代码段中获取(a)。获取(0)?好的,这很有意义。我想它是for循环!谢谢!
final int whatYoureLookingFor = 1232;
int index = Iterables.indexOf(array, new Predicate<ArrayList<Integer>>() {
        public boolean apply(ArrayList<Integer> a) {
             return a.contains(whatYoureLookingFor);
        }
    });
class MultiIndex<E> {

    static <E> MultiIndex<E> indexOf(List<List<E>> list, E e) {
        for(int i = 0; i < list.length; i++) {
            List<E> in = list.get(i);
            int index = in.indexOf(e);
            if(index > -1) return new MultiIndex(i,index);
        }
        return null;
    }
    int outside;
    int inside;
    private MultiIndex(int out, int in) {
        outside = out;
        inside = in;
    }

    E get(List<List<E>> list) {
        return list.get(outside).get(inside);
    }
}