有 Java 编程相关的问题?

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

Java数组:如何在数组1D和2D中插入删除项

我开发了一个GUI来管理3D对象。例如,贝塞尔曲线中点的多段线(多段直线连接)阵列、贝塞尔曲面中点的二维阵列、双阵列1D、双阵列2D。 我想开发一个类,用泛型或其他东西以单一形式插入/删除行或列上的项

这是我的课堂档案:(我觉得不管用)

    package one.empty3.library.core;

import java.util.Arrays;

/**
 * Created by manue on 24-07-19.
 */
public class EcArrays<T>
{
    public T[] deleteRowAtDim1(T[] array, int pos)
    {
        T[] ts = Arrays.copyOf(array, array.length-1);
        int i0=0;
        for(int i=0; i<ts.length; i++) {
            if(pos!=i)
            {
                ts[i] = array[i0];
                i0++;
            }
        }
        return ts;
    }
    public T[][] deleteRowAtDim2(T[][] array, int pos)
    {
        T[][] ts = (T[][]) new Object[array.length-1][];
        int i0=0;
        for(int i=0; i<ts.length; i++) {
            if(pos!=i)
            {
                ts[i] = array[i0];
                i0++;
            }
        }
        return ts;
    }
    public T[][] deleteColAtDim2(T[][] array, int pos)
    {
        T[][] ts = (T[][]) new Object[array.length][];
        for(int i=0; i<array.length;i++)
        {
            ts[i] = deleteRowAtDim1(array[i], pos);
        }
        return ts;
    }

    T[] insertRowAtDim1(T[] array, int pos, T value)
    {
        T[] ts = Arrays.copyOf(array, array.length+1);
        int i0=0;
        for(int i=0; i<ts.length; i++) {
            if(pos!=i)
            {
                ts[i] = array[i0];
                i0++;
            }
            else {
                ts[i] = value;
            }
        }
        return ts;
    }
    public T[][] insertRowAtDim2(T[][] array, int pos, int rowSize)
    {
        T[][] ts = (T[][]) new Object[array.length+1][];
        int i0= 0;
        for(int i=0; i<ts.length;i++)
        {
            if(i!=pos) {
                ts[i] = array[i0];
                i0++;
            }
            else {
                ts[i] = (T[]) new Object[rowSize];
            }
        }
        return ts;
    }
    public T[][] insertColAtDim2(T[][] array, int pos)
    {
        T[][] ts = (T[][]) new Object[array.length][];
        for(int i=0; i<array.length; i++)
        {
            ts[i] = insertRowAtDim1(array[i], pos, (T) new Object());
        }
        return ts;
    }

}

我为不同的数组对象类尝试了多种方法


共 (1) 个答案

  1. # 1 楼答案

    根据您的场景,您可以使用像ArrayList这样的类这样的集合,动态地插入或删除元素。根据您的情况,您可以如下初始化您的结构:

    List<List<T>> dynamicMatrix2D = new ArrayList<List<T>>();
    

    ArrayList的每个元素代表一行(最初为空),您可以在其中添加或删除元素