有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有4个集合,每个集合都包含在特定时刻节省的时间。我想说的是,我的问题相当笼统,所以藏品包含的内容并不重要。我想知道我怎么可能在同一时间循环这些集合,获得大小并返回最长的集合。这有意义吗


共 (4) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    有不同的方式:

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

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

    int size = -1;
    for (Collection col : allCollections) {
        if (col.size() > size) size = col.size();
    }
    
  3. # 3 楼答案

    如果您有实现接口集合的集合,那么只需使用

    Collection.size();
    

    提供收藏的长度

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

    您不必迭代集合中的所有项

  4. # 4 楼答案

    以下是一个例子:

    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
    

    这就是你想要的吗