【问题标题】:How to re-dimension an array as long as i want [duplicate]只要我愿意,如何重新调整数组的尺寸[重复]
【发布时间】:2013-10-22 13:54:37
【问题描述】:

我想知道是否可以根据需要重新调整数组的尺寸。我试着去做,似乎没有任何问题。我用这些步骤创建了一个数组

//step 1
String  parole[];

//step 1        
parole = new String[1];
parole[0] = "ciao";

 //step 1       
parole = new String[2];
parole[1] = "buongiorno";

我问这个是因为我心里有一些东西告诉我我做不到。也许我在某个地方读到了一些东西......

【问题讨论】:

  • 改用ArrayList
  • 可以,但每次都必须复制所有数据。
  • 如果你不会使用List,那么有一个完整的 API:docs.oracle.com/javase/7/docs/api/java/util/…
  • 执行第三步时,您将在第一个数组中丢失“ciao”。请改用 ArrayList。

标签: java jsp


【解决方案1】:

当然你可以创建一个新的数组对象并将它分配给一个数组引用。

但如果你认为 parole[0] 在你最后一步之后仍然会有“ciao”,那你就错了。

【讨论】:

    【解决方案2】:

    可以,但是您需要将第一个数组复制到一个新数组中。

    查看此示例代码:

    public class ArrayCp {
        public static void main(String[] args)
        {
            String[] primoArray = new String[1];
            primoArray[0] = "Ciao";
            // Copio il primo array nel secondo cambiandone la dimensione (secondo parametro)
            String [] secondoArray = Arrays.copyOf(primoArray, 2);
            secondoArray[1] = "Buona Sera";
    
            for(String s : secondoArray) {
                System.out.println("Elemento: " + s );
            }
        }
    }
    

    不过最好使用 ArrayList:

    ArrayList<String> theArr = new ArrayList<String>();
    theArr.add("Ciao");
    theArr.add("Buona Sera");
    theArr.add("Buona Notte");
    

    返回一个简单的数组

    String [] resArray = theArr.toArray(new String[theArr.size()]);
    

    【讨论】:

      【解决方案3】:

      创建一个“new String[]”就是这样,创建一个新的字符串数组。这意味着您之前在引用中拥有的任何数据都将被“新”对象覆盖。 (如果你有其他对 string[] 的引用,它不会丢失)

      因此,简而言之,不,您不能“重新标注”数组。

      在您的情况下,最好使用 ArrayList,它提供动态调整大小(并且更容易使用)。

      【讨论】:

        【解决方案4】:

        我同意@BigMike 您应该尝试 ArrayList,因为它内置了容量方法,这比我们手动执行要好得多。 它在amortized time 中完成工作,这对我们来说很难实现。

        更多详情请参考this

        【讨论】:

          猜你喜欢
          • 2019-03-11
          • 2020-02-06
          • 2014-04-23
          • 2014-09-08
          • 1970-01-01
          • 2014-11-19
          • 1970-01-01
          • 1970-01-01
          • 2022-07-19
          相关资源
          最近更新 更多