【问题标题】:ArrayList of String Arrays字符串数组的 ArrayList
【发布时间】:2010-12-27 15:07:11
【问题描述】:

我想做这样的事情:

private ArrayList<String[]> addresses = new ArrayList<String[3]>();

这似乎不起作用。在不为其创建单独的类的情况下,在数组中存储多个地址(每个地址 3 个字段)的最简单方法是什么?

【问题讨论】:

    标签: java arrays arraylist


    【解决方案1】:

    对 3 个字符串使用第二个 ArrayList,而不是原始数组。即。
    private List&lt;List&lt;String&gt;&gt; addresses = new ArrayList&lt;List&lt;String&gt;&gt;();

    那么你可以有:

    ArrayList<String> singleAddress = new ArrayList<String>();
    singleAddress.add("17 Fake Street");
    singleAddress.add("Phoney town");
    singleAddress.add("Makebelieveland");
    
    addresses.add(singleAddress);
    

    (我认为这里的类型擦除可能会发生一些奇怪的事情,但我认为这不重要)

    如果您对使用原始数组一无所知,只需稍作更改即可让您的示例正常工作。正如其他答案中所解释的,数组的大小不能包含在声明中。所以改变:

    private ArrayList<String[]> addresses = new ArrayList<String[3]>();
    

    private ArrayList<String[]> addresses = new ArrayList<String[]>();
    

    会起作用的。

    【讨论】:

      【解决方案2】:

      我不会使用数组。由于几个原因,它们存在问题,并且无论如何您都不能根据特定的数组大小来声明它。试试:

      List<List<String>> addresses = new ArrayList<List<String>>();
      

      但老实说,对于地址,我会创建一个类来对其进行建模。

      如果你要使用数组,那就是:

      List<String[]> addresses = new ArrayList<String[]>();
      

      即你不能声明数组的大小。

      最后,不要在这样的实例中将你的类型声明为具体类型(即addresses)。使用我在上面所做的界面。这适用于成员变量、返回类型和参数类型。

      【讨论】:

        【解决方案3】:

        您不能强制字符串数组具有特定大小。 你可以这样做:

        private List<String[]> addresses = new ArrayList<String[]>();
        

        但可以将任意大小的数组添加到此列表中。

        但是,正如其他人所提到的,正确的做法是创建一个单独的类来表示地址。然后你会有类似的东西:

        private List<Address> addresses = new ArrayList<Address>();
        

        【讨论】:

          【解决方案4】:
          List<String[]> addresses = new ArrayList<String[]>();
          String[] addressesArr  = new String[3];
          
          addressesArr[0] = "zero";
          addressesArr[1] = "one";
          addressesArr[2] = "two";
          
          addresses.add(addressesArr);
          

          【讨论】:

            【解决方案5】:
            private List<String[]> addresses = new ArrayList<String[]>();
            

            这肯定会起作用...

            【讨论】:

              【解决方案6】:

              试试这个

              ArrayList<ArrayList<String>> PriceModelList = new ArrayList<>();
                  ArrayList<ArrayList<String>> PriceQtyList = new ArrayList<>();
                  ArrayList<ArrayList<String>> PriceTotalList = new ArrayList<>();
              
                  for (int i = 0; i < CustomerNames.length; i++) {
                      PriceModelList.add(new ArrayList<String>());
                      String[] PriceModel = {"s6", "s7", "note4", "note5", "j5", "j6"};
                      for (int j = 0; j < PriceModel.length; j++) {
                          PriceModelList.get(i).add(PriceModel[j]);
                      }
              
                      PriceQtyList.add(new ArrayList<String>());
                      String[] PriceQut = {"12", "13", "21", "15", "43", "21"};
                      for (int k = 0; k < PriceQut.length; k++) {
                          PriceQtyList.get(i).add(PriceQut[k]);
                      }
              
                      PriceTotalList.add(new ArrayList<String>());
                      String[] PriceTotal = {"1323", "1312321", "43123212", "43434", "12312", "43322"};
                      for (int m = 0; m < PriceTotal.length; m++) {
                          PriceTotalList.get(i).add(PriceTotal[m]);
                      }
                  }
              
                  ArrayList<ArrayList<ArrayList<String>>> CustomersShoppingLists = new ArrayList<>();
                  CustomersShoppingLists.add(PriceModelList);
                  CustomersShoppingLists.add(PriceQtyList);
                  CustomersShoppingLists.add(PriceTotalList);
              

              【讨论】:

                【解决方案7】:

                创建字符串数组列表的简单直接的方法

                    List<String> category = Arrays.asList("everton", "liverpool", "swansea", "chelsea");
                

                干杯

                【讨论】:

                  【解决方案8】:

                  Java 8 中的以下作品..

                  List<String[]> addresses = new ArrayList<>();
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-01-24
                    • 2017-04-10
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-02-15
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多