循环遍历java代码中的多个集合

时间:2013-06-13 08:52:51

标签: java collections for-loop

我有4个系列,每个系列包含在特定时刻保存的时间。我会说我的问题相当普遍,所以集合包含的内容并不重要。我想知道如何在同一时间循环这些集合,获得大小并返回最长的集合。这有意义吗?

4 个答案:

答案 0 :(得分:3)

为什么要迭代一个Collection以了解它的大小?集合有size()方法

答案 1 :(得分:0)

如果您有实现接口Collection的集合,则可以使用

Collection.size();

提供集合的长度。

然后你可以比较size()调用的结果,找到最长的集合。

您不必遍历集合中的所有项目。

答案 2 :(得分:0)

有不同的方式:

  • 您可以使用来自Apache Commons的CollectionUtils将您的馆藏合并为一个
  • 您可以将您的收藏集放入另一个收藏/列表中。 Collection正在实现Iterator,因此您可以简单地遍历它们。
  • 您可以递归调用给定集合的方法。

我认为您应该采用第二种方法并将大小存储在变量中,并在新集合更大时替换它。

int size = -1;
for (Collection col : allCollections) {
    if (col.size() > size) size = col.size();
}

答案 3 :(得分:0)

这是一个例子 -

List<Integer> l1=new ArrayList<Integer>();
List<Integer> l2=new ArrayList<Integer>();
List<Integer> l3=new ArrayList<Integer>();
List<Integer> l4=new ArrayList<Integer>();

l1.add(1);l1.add(1);
l2.add(2);l2.add(2);l2.add(2);
l3.add(3);l3.add(3);l3.add(3);l3.add(3);
l4.add(4);l4.add(4);l4.add(4);

System.out.println("L1 size "+l1.size());
System.out.println("L2 size "+l2.size());
System.out.println("L3 size "+l3.size());
System.out.println("L4 size "+l4.size());
String array="l1";
int i=l1.size();
if(i<l2.size())
    array="l2";
if(i<l3.size())
    array="l3";
if(i<l4.size())
    array="l4"; 
System.out.println("Largest Array is = "+array);

这是输出

L1 size 2
L2 size 3
L3 size 4
L4 size 3
Largest Array is = l4

这就是你想要的吗?