【问题标题】:How do I declare a 2D String arraylist?如何声明二维字符串数组列表?
【发布时间】:2012-06-01 20:21:15
【问题描述】:

我想做这样的事情ArrayList<String<String>> mylist

如何创建它?

如何添加到外部和内部列表中

如何将内部列表转换为简单的数组列表?

【问题讨论】:

  • 你的意思是ArrayList<ArrayList<String>>

标签: java arrays arraylist


【解决方案1】:

有两种方法可以实现您的愿望。我为两者提供代码 sn-p:

1.List<List<String>> lol = new ArrayList<List<String>>();

Scanner in = new Scanner(System.in);
int size = in.nextInt();

//Declare your two dimensional ArrayList of Strings. 
List< List<String>> lol = new ArrayList<List<String>>();

//Instantiate and Populate
for (int i=0;i<size;i++){
    int internalListSize = in.nextInt(); //the size of each internal list
    lol.add(new ArrayList<String>());
    for (int j=0;j<internalListSize;j++){
        String whateverYouWanttoPut = in.nextLine();
        lol.get(i).add(whateverYouWanttoPut);
    }
}

//Access Elements 
try {
    System.out.println(lol.get(0).get(4));
    System.out.println(lol.get(1).get(2));
    System.out.println(lol.get(3).get(2));
} catch (Exception e){
    System.out.println("ERROR!");
}     

2。 ArrayList[] set = new ArrayList[n];

Scanner in = new Scanner(System.in);
int size = in.nextInt();
//Declare your two dimensional ArrayList of Strings.
ArrayList[] set = new ArrayList[size];

//Populate it. 
for(int i=0;i<size;i++){
    int innerSize = in.nextInt();
    set[i] = new ArrayList<String>();
    for(int j=0;j<innerSize;j++){  
        set[i].add(in.nextLine());                
    }
}        
try{
    System.out.println(set[0].get(1));
    System.out.println(set[1].get(2));
} catch(Exception e){
    System.out.println("ERROR!");
}

【讨论】:

    【解决方案2】:

    你可以去

    List<List<String>> ls2d = new ArrayList<List<String>>();
    List<String> x = new ArrayList<String>();
    x.add("Hello");
    x.add("world!");
    ls2d.add(x);
    
    System.out.println(Arrays.deepToString(ls2d.toArray()));
    

    【讨论】:

    • 我们如何打印列表ls2d 作为索引虎钳。我的意思是打印ls2d 列表的第一个元素,然后是 2 个元素,依此类推
    • @KasunSiyambalapitiya 使用类似forwhile 的循环。例如:for(List&lt;String&gt; inner : ls2d) { System.out.println(Arrays.toString(ls2d.toArray())); }.
    • 为什么决定将外层List设为ArrayList,而让内层List成为List?
    • @sbhatla List 是一个接口,因此必须使用实现该接口的具体类来初始化对象,例如ArrayListLinkedList
    • 为什么内部类仍然初始化为“List”而不是“ArrayList”?
    【解决方案3】:

    试试这个:

    public class JavaTests {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
    
        String[ ][ ] test2 = new String[3][3];      //3 can be replace if you add more test2[?][?] = "RandomString"
    
            test2[0][0] = "String1";
            test2[0][1] = "String2";
            test2[0][2] = "String3";
    
            test2[1][0] = "String4";
            test2[1][1] = "String5";
            test2[1][2] = "String6";
    
            test2[2][0] = "String7";
            test2[2][1] = "String8";
            test2[2][2] = "String9";
    
            for (int i = 0; i <= 2; i++){
                for (int j = 0; j <= 2; j++){
                    System.out.print(test2[i][j] +"\t");
                }
                System.out.println("\n");
            }  
            System.out.println("\n");      
        }
    }
    

    【讨论】:

      【解决方案4】:

      第一个数组列表不是String的数组列表,而是ArrayList的ArrayList。

      ArrayList<ArrayList<String>>
      

      【讨论】:

      • 废话,应该发布答案而不是评论:p
      • 如何添加到第二个列表?
      • user521190,第一个数组列表不是String的数组列表,而是arraylist的arraylist。
      • 我还是不明白为什么人们声明ArrayList而不是List,记住要面向接口开发。另外,检查TypeList vs type ArrayList in Java
      • 我的意思是,如果你想教 Java 编程,你应该以正确的方式去做,而不仅仅是可以运行的东西:)。
      【解决方案5】:
      List<List<String>> super2dArray = new ArrayList<ArrayList<String>>()
      

      这是一个包含字符串的数组列表。

      ArrayList&lt;String&lt;String&gt;&gt; mylist 也没有任何意义,因为 String 不是集合/列表,但我想你明白这一点。不过,未来的读者可能不会。

      请参阅 this answer 了解我为什么选择在左侧使用 List

      【讨论】:

        【解决方案6】:
        List<List<String>> array = new ArrayList<List<String>>();
        ...
        array.add(new ArrayList<String>())
        array.get(0).add("qqq");
        

        array.get(0) - 是一个内部列表

        【讨论】:

          猜你喜欢
          • 2011-04-18
          • 1970-01-01
          • 2014-01-14
          • 2015-05-26
          • 1970-01-01
          • 1970-01-01
          • 2010-10-12
          • 2022-01-15
          相关资源
          最近更新 更多