【问题标题】:How to increase the size of an array in Java?如何在 Java 中增加数组的大小?
【发布时间】:2022-01-13 21:46:25
【问题描述】:

我想在数组中存储用户所需的尽可能多的元素。但是我该怎么做。

如果我要创建一个数组,我必须使用固定大小。每次将新元素添加到数组并且数组变满时,我想将其大小更新为“1”。

我厌倦了各种类型的代码,但没有成功。

如果有人能给我一个解决方案,那将是非常有帮助的 - 如果可能的话,在代码中。

【问题讨论】:

标签: java arrays size


【解决方案1】:

使用 ArrayList。如果您尝试添加到完整的 ArrayList,它的大小会自动增加。

【讨论】:

  • 这不是答案。
【解决方案2】:

不要使用数组,而是使用java.util.List 的实现,例如ArrayList。 ArrayList 有一个数组后端,它将值保存在列表中,但数组大小由列表自动处理。

ArrayList<String> list = new ArrayList<String>();
list.add("some string");

对于其他元素类型,您还可以使用 list.toArray(new String[list.size()]) 等将列表转换为数组。

【讨论】:

  • 谢谢..它..会很好..如果你能给我打印出来的代码..列表中的元素
  • @joelabishaipaul System.out.println(list) 应该可以很好地完成这项工作 ;) 如果您想在单独的行上打印每个,您可以使用 for-each/enhanced-for loop 遍历列表中的每个值。
【解决方案3】:

你可以使用数组列表

这里是字符串数组列表的示例

'导入java.io.BufferedReader; 导入 java.io.IOException; 导入 java.io.InputStreamReader; 导入 java.util.ArrayList;

公开课 Ex01 {

public static void main(String[] args) throws IOException { 

    BufferedReader userInput = new BufferedReader 
        (new InputStreamReader(System.in));

    ArrayList<String> myArr = new ArrayList<String>();
    myArr.add("Italian Riviera");
    myArr.add("Jersey Shore");
    myArr.add("Puerto Rico");
    myArr.add("Los Cabos Corridor");
    myArr.add("Lubmin");
    myArr.add("Coney Island");
    myArr.add("Karlovy Vary");
    myArr.add("Bourbon-l'Archambault");
    myArr.add("Walt Disney World Resort");
    myArr.add("Barbados");

    System.out.println("Stupid Vacation Resort Adviser");
    System.out.println("Enter your name:");
    String name = userInput.readLine();
    Integer nameLength = name.length();
    if (nameLength == 0) 
    { 
        System.out.println("empty name entered");
        return;
    } 

    Integer vacationIndex = nameLength % myArr.size();

    System.out.println("\nYour name is "+name+", its length is " + 
                    nameLength + " characters,\n" +
                    "that's why we suggest you to go to " 
                    + myArr.get(vacationIndex));
} 

}'

同样你可以为整数、blooean和各种数据类型制作数组

更多细节你可以看到这个

http://www.anyexample.com/programming/java/java_arraylist_example.xml

【讨论】:

    【解决方案4】:

    你不能。您可以创建一个新数组并将项目移动到该数组 - 或者您可以使用 ArrayList。

    【讨论】:

      【解决方案5】:

      创建列表对象,添加元素并使用 list.toArray(new String[list.size()]) 将该列表对象转换为数组

      【讨论】:

        【解决方案6】:

        您可以创建一个大小比原来大一个元素的临时数组,然后将原来的元素复制到 temp 中,并将临时数组分配给新的。

        public void increaseSize() {
           String[] temp = new String[original.length + 1];
           
           for (int i = 0; i < original.length; i++){
              temp[i] = original[i];
           }
           original = temp;
        }
        

        您可以通过多种方式更改大小,但同样的想法也适用。

        【讨论】:

          【解决方案7】:

          通过在java.util.ArraysString[] 中使用copyOf 方法,大小将自动/动态增加。在下面的代码中array 大小0 在使用Arrays.copyOf 进行操作后,字符串array 的大小增加到4

          package com.google.service;
          
          import java.util.Arrays;
          
          public class StringArrayAutoIncrement {
              public static void main(String[] args) {
                  String[] data = new String[] { "a", "b", "c", "d", "e" };
                  String[] array = new String[0];// array initialize with zero
                  int incrementLength = 1;
                  for (int i = 0; i < data.length; i++) {
                      array = Arrays.copyOf(data, i + incrementLength);// increment by +1
                  }
                  /**
                   * values of array after increment
                   */
                  for (String value : array) {
                      System.out.println(value);
                  }
              }
          }
          

          输出:

          a
          b
          c
          d
          e
          

          【讨论】:

          • 不打算编辑它,因为这将是一个功能性代码更改,但是:这实际上并没有创建一个增加大小的data 的副本。它创建一个空数组,然后用更长的数组替换那个数组,最后得到一个精确的副本,而不是更长的。输出也显示了这一点:数组是否更长,应该有一个null 输出。要实际增加数组的长度,array 的声明和整个第一个循环应该简单地替换为 String[] array = Arrays.copyOf(data, data.length + incrementLength);
          【解决方案8】:

          在低级别你可以这样做:

          long[] source = new long[1];
          long[] copy = new long[source.length + 1];
          System.arraycopy(source, 0, copy, 0, source.length);
          source = copy;
          

          Arrays.copyOf() 也在做同样的事情。

          【讨论】:

            【解决方案9】:
            public class IncreaseArraySize {
             public static void main(String[] args) {
                int arr[] = new int[5];
                  for (int i = 0; i < arr.length; i++) {
                        arr[i] = 5;
                  }
                  for (int i = 0; i < arr.length; i++) {
                        System.out.print(arr[i] + " ");
                  }
                   System.out.println(" ");
                   System.out.println("Before increasing Size of an array :" + arr.length);
            
            
                    int arr2[] = new int[10];
            
                    arr = arr2;
                    arr2 = null;
                    for (int i = 0; i < arr.length; i++) {
                    System.out.print(arr[i] + " ");
                }
                System.out.println("");
                System.out.println("After increasing Size of an array : " + arr.length);
            }
            }
            

            【讨论】:

              【解决方案10】:

              你可以这样做

              import java.util.Scanner;
              
              class Add
              {
                public static void main(String[] args)
                {
                   Scanner obj=new Scanner(System.in);
                   char ans='y';
                   int count=0;
                   while(ans!='N'||ans!='n')
                   {
                     int initial_size=5; 
                     int arr[]=new int [initial_size];
                     arr[0]=1;
                     arr[1]=2;
                     arr[2]=3;
                     arr[3]=4;
                     arr[4]=5;
              
                     if(count>0)
                     {
                         System.out.print("enter the element u want to add in array: ");
                         arr[initial_size-1]=obj.nextInt();
                     }
                     System.out.print("Do u want to add element in array?");
                     ans=obj.next().charAt(0);
                     if(ans=='y'||ans=='Y')
                     {
                       initial_size++;
                       count++;
                     }             
                  }   
                }
              
              }
              

              【讨论】:

                【解决方案11】:

                https://www.java2novice.com/java-arrays/array-copy/

                int[] myArr = {2,4,2,4,5,6,3};
                System.out.println("Array size before copy: "+myArr.length);
                int[] newArr = Arrays.copyOf(myArr, 10);
                System.out.println("New array size after copying: "+newArr.length);
                

                你也可以这样做 myArr = Arrays.copyOf(myArr, 10);

                在这种情况下,myArr = Arrays.copyOf(myArr, myAry.length+1);

                【讨论】:

                • 令人惊讶的是这有效。我想知道为什么没有人赞成你的回答
                猜你喜欢
                • 2013-06-06
                • 2020-05-24
                • 1970-01-01
                • 1970-01-01
                • 2013-11-30
                • 1970-01-01
                • 2012-01-13
                相关资源
                最近更新 更多