Java 多维数组列表索引?
我在查找多维数组列表中的一些数据时遇到问题。我基本上有一个充满arraylist的arraylistJava 多维数组列表索引?,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<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);
}
}