【问题标题】:java arraylist of arraylists数组列表的java数组列表
【发布时间】:2010-11-13 10:50:43
【问题描述】:

嗨,当我想拥有类似向量的向量(当然,元素应排序)时,我想拥有 arraylist 的 arraylist,但在 C++ 中,我会这样做以访问元素 v.at(i).at(j)=5;,当我需要添加新的元素v.at(i).push_back(value); 那么我如何在java中做到这一点?因为我只能访问外部数组列表,但我不知道如何添加新元素...有没有更好的方法在 java 中模拟 C++ 向量的向量??

p.s(它不是​​一个 3*2 的矩阵,但每个数组列表可能有不同的大小)

【问题讨论】:

    标签: java c++ matrix arraylist


    【解决方案1】:

    声明ArrayListArraList<Integer>s:

    ArrayList<ArrayList<Integer>> v = new ArrayList<ArrayList<Integer>>();
    v.add(new ArrayList<Integer>());
    
    v.get(0).add(new Integer(5));
    v.get(0).add(new Integer(10));
    System.out.println(v.get(0).get(0)); // => 5
    System.out.println(v.get(0).get(1)); // => 10
    

    【讨论】:

    • 你不应该使用new Integer(..)。让 Java 自动装箱。或者,最不推荐使用Integer.valueOf(..)
    【解决方案2】:
    List<List<Integer>> l = new ArrayList<List<Integer>>();
    
    // initialize the inner lists
    for (int i = 0; i < 10; i++) 
        l.add(new ArrayList<Integer>());
    
    
    // now you can use it as you would like
    l.get(i).add(5);
    l.get(i).set(0, 3);
    

    【讨论】:

    • 停止使用 Vector 类!抱歉,这很粗鲁,但 Vector 已经“弃用”了 5 年。
    • 我知道,我刚刚编辑并从 ArrayList 更改为 Vector。我认为他需要一个同步版本...
    • 将其改回 ArrayList(现在使用 List 接口 - 更简洁)。
    【解决方案3】:

    您可以在 Java 中使用 List&lt;List&lt;Integer&gt;&gt;。访问该元素将是list.get(i).get(j)。同样添加:list.get(i).add(var)。也看看set(..)方法

    【讨论】:

      【解决方案4】:

      我还不能对以前的 cmets 发表评论,所以我会在这里发布。

      正如netbeans所说,没有必要写

      ArrayList< ArrayList< Integer>> v = new ArrayList< ArrayList< Integer>>();
      

      因为参数是多余的;相反,你可以写:

      ArrayList< ArrayList< Integer>> v = new ArrayList<>();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-31
        • 2012-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-27
        • 2021-02-28
        • 1970-01-01
        相关资源
        最近更新 更多