-6

我有 4 个集合,每个集合都包含在特定时间保存的时间。我会说我的问题是相当笼统的,所以集合包含的内容并不重要。我想知道如何同时遍历这些集合,获取大小并返回最长的集合。这有意义吗?

4

4 回答 4

3

为什么要遍历 Collection 以了解其大小?收藏有size()方法

于 2013-06-13T08:56:44.610 回答
0

If you have collections that implement the interface Collection, you can just use

Collection.size();

to provide the length of the collection.

Then you can compare the results of the size() calls to find the longest collection.

You don't have to iterate over all the items in the collection.

于 2013-06-13T08:58:14.460 回答
0

有不同的方法:

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

我认为你应该采用第二种方法并将大小存储在一个变量中,如果新集合更大,则替换它。

int size = -1;
for (Collection col : allCollections) {
    if (col.size() > size) size = col.size();
}
于 2013-06-13T09:00:51.993 回答
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

那是你想要的吗?

于 2013-06-13T09:47:07.010 回答