有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

向Java数组添加数据

我有一个想法,可以绕过Java中普通数组的空间硬限制。这样行吗

public class Array{
  private int[] group;

  public void addNums(int[] nums) {
    int[] list = new int[group.length + nums.length];
    for (int a = 0; a < group.length; a++)
      list[a] = group[a];
    for (int a = group.length; a < nums.length; a++)
      list[a] = nums[a - group.length];
    group = list;
  }
}

共 (3) 个答案

  1. # 1 楼答案

    你的方法会奏效,但你不应该重新发明轮子ArrayList. addAll()为您这样做(有一个区别,没有ArrayList<int>,只有ArrayList<Integer>,但您几乎不会注意到区别)

    因此,我建议使用ArrayListVector或其他一些List实现

  2. # 2 楼答案

    如果必须使用int[]而不是List<Integer>,则可以使用System.arraycopy()方法

    public void addNums(int[] nums) {
        int[] newGroup = new int[this.group.length + nums.length];
    
        // copy elements from group array to newGroup array
        System.arraycopy(group, 0, newGroup, 0, group.length);
    
        // copy elements from nums array to newGroup array
        System.arraycopy(nums, 0, newGroup, this.group.length, nums.length);
    
        this.group = newGroup;
    }
    
  3. # 3 楼答案

    首先,我推荐您尝试创建自己的ArrayList,正如您所说,您是java初学者

    你真的很接近了。你的第二个for循环有一个小问题:

    public void addNums(int[] nums) {
        int[] list = new int[group.length + nums.length];
        for (int a = 0; a < group.length; a++)
            list[a] = group[a];
    
        for (int a = group.length; a < list.length; a++)
            list[a] = nums[a -group.length];
        group = list;
    }
    

    您希望它循环到新的list的末尾,而不是nums,因为我们希望使用a来指定元素在数组中的位置

    此外,这可能有点离题,但您的解决方案似乎不在Array类中的任何位置,无法指定group[]中的内容。因此,考虑添加一些吸气剂和设定器进行测试:

    public class Array {
    
        private int[] group;
    
        public int[] getGroup() {
            return group;
        }
    
        public void setGroup(int[] group) {
    
            this.group = group;
        }
    

    然后,当您测试addNums()方法时,您可以这样做:

    public static void main(String[] args) throws IOException {
    
        Array m = new Array();
    
        int[] startArray = {1,2,3,4,5};
        m.setGroup(startArray);
    
        int[] endArray = {6,7,8,9,10,11,12};
        m.addNums(endArray);
    
        System.out.println(Arrays.toString(m.getGroup()));
    }