如何在Vector中找到包含最多元素的对象? 例如:
int[] val1 = {1,2,3};
int[] val2 = {1};
int[] val3 = {1,2};
Vector<Object> d = new Vector<Object>(); // update
c.add(val1);
c.add(val2);
c.add(val3);
int answ = findBiggest(c);
在此示例中,answ
应该等于0,因为val1
包含3个数字。
答案 0 :(得分:1)
int[]
添加到Vector<Integer>
您可以使用增强的for循环遍历集合的元素:
for(int[] element : collection){ /* Do something with element */ }
length
字段找到数组的元素数。答案 1 :(得分:1)
首先要注意的是,您的Vector
输入不是很好(应该是Vector<int[]>
)
接下来是一个快速的方法
public int findBiggest(Vector<int[]> c) {
int max = -1;
int ok = -1;
int index = 0;
for (int[] ints : c) {
if (max < ints.length) {
max = ints.length;
ok = index;
}
index ++;
}
return ok;
}
public void test() {
int[] val1 = {1,2,3};
int[] val2 = {1};
int[] val3 = {1,2};
Vector<int[]> c = new Vector<int[]>();
c.add(val1);
c.add(val2);
c.add(val3);
int answ = findBiggest(c);
}
正如michael-borgwardt所说,出于这个原因不要使用Vector:Vector Obsolete。简而言之,这是由于同步问题。因此,使用List抽象及其通用实现ArrayList。你也可以使用Collection(因为索引在这里看起来不重要)而不是List。
答案 2 :(得分:1)
我已经通过自由地将数据类型更改为arraylist来回答这个问题,我相信这是你最初想要的......
我也将泛型类型更改为Integer []。因为我认为有一个与自动装箱相关的开销,我认为这是最小但很好的做法? (任何人都可以证实这一点吗?)
public static void main(String[] args) {
Integer[] val1 = {1,2,3};
Integer[] val2 = {1,2,3,3,3};
Integer[] val3 = {1,2};
ArrayList<Integer[]> c = new ArrayList<Integer[]>();
c.add(val1);
c.add(val2);
c.add(val3);
int answ = findBiggest(c);
System.out.println(answ);
}
public static int findBiggest(ArrayList<Integer[]> list){
int biggestSize = 0
int biggestPos = -1;
int i = 0;
for(Integer[] el : list){
if(el.length >= biggestSize){
biggestSize = el.length;
biggestPos = i;
}
i++;
}
return biggestPos;
}