【问题标题】:How to replace a value in an ArrayList (with multiple columns) with a new value, in JAVA如何在 JAVA 中用新值替换 ArrayList(具有多列)中的值
【发布时间】:2025-12-24 06:25:12
【问题描述】:

当 ArrayList 是单列时,我已经阅读了许多关于更新 ArrayList 中某个值的帖子。就我而言,我有一个多列 ArrayList,它是通过使用以下 JAVA 代码完成的。

Class A{
           private List<double[]> ArrayList;

           double[] _array = {0.0, 1.0};
           ArrayList.add(_array);

           _array = {2.0, 5.0};
           ArrayList.add(_array);

           _array = {3.0, 8.0};
           ArrayList.add(_array);
}

然后我的 ArrayList 看起来像, {0.0, 1.0} {2.0, 5.0} {3.0、8.0}

我的问题是:我试图用新号码替换数字 8.0。而且我不认为我可以使用“ArrayList.set(2, 8.0)”来实现目标,因为它只有在 ArrayList 有单列时才能正常工作。

欢迎任何反馈和cmets。

【问题讨论】:

  • 大家好,另一个简短的问题,即当我尝试使用 user3334250 编写的类似代码时,例如arrayList.set(0, new double [] {arrayList.get(0)[3]‌​, arrayList.get(0)[3] + arrayList.get(0)[1]}‌​);发生的事情是:虽然(索引 3 的)值已成功更新,但我的 arrayList 的大小已更改为 2(从 8 为原始大小)。我就是想不通原因,你有什么想法吗?

标签: java arraylist multiple-columns


【解决方案1】:

你应该先从arrayList中选择数组。

double[] _array = ArrayList.get(1);
_array[1] = 2;

【讨论】:

  • 感谢分享这个 tsadkan,是的,您的解决方案是正确的。
【解决方案2】:

您需要致电.get() 以获取您要查找的数组。

然后您可以在数组中设置单个值。

【讨论】:

    【解决方案3】:

    这是将 8.0 的值更改为 4.4 的单行代码

    arrayList.set(2, new double[]{arrayList.get(2)[0], 4.4});
    

    完整示例:

    public static void main(String[] args) {
        List<double[]> arrayList = new ArrayList<double[]>();
        arrayList.add(new double[]{0.0, 1.0});
        arrayList.add(new double[]{2.0, 5.0});
        arrayList.add(new double[]{3.0, 8.0});
    
        System.out.println("Before:");
        for (double[] d : arrayList) {
            System.out.println(d[0] + ", " + d[1]);
        }
    
        arrayList.set(2, new double[]{arrayList.get(2)[0], 4.4});
    
        System.out.println("After:");
        for (double[] d : arrayList) {
            System.out.println(d[0] + ", " + d[1]);
        }
    }
    

    输出:

    Before:
    0.0, 1.0
    2.0, 5.0
    3.0, 8.0
    After:
    0.0, 1.0
    2.0, 5.0
    3.0, 4.4
    

    【讨论】:

    • 嗨 user3334250,感谢分享,这正是我需要的。
    • 你好,另一个简短的问题,即当我尝试类似的代码时,例如arrayList.set(0, new double [] {arrayList.get(0)[3], arrayList.get(0)[3] + arrayList.get(0)[1]});发生的事情是:虽然(索引 3 的)值已成功更新,但我的 arrayList 的大小已更改为 2(从 8 为原始大小)。我就是想不通原因,你有什么想法吗?
    【解决方案4】:

    我分析您的问题并执行此类程序。您必须获取所有属性,然后对其进行编辑。使用 HashMap 进行此类操作是最好的方法。我希望下面的代码可以帮助你...

    import java.util.ArrayList;
    import java.util.HashMap;
    
    public class RectangleL {
    
        public static void main(String args[])
        {
            ArrayList<HashMap<String,String>> lstShap = new ArrayList<>();
            HashMap<String,String> shape1 = new HashMap<>();
            HashMap<String,String> shape2 = new HashMap<>();
            lstShap.clear();
            shape1.put("width","30");
            shape1.put("height","40");
            shape1.put("infected","false");
            lstShap.add(0,shape1);
    
            shape2.put("width","20");
            shape2.put("height","49");
            shape2.put("infected","false");
            lstShap.add(1,shape2);
    
            System.out.println(lstShap.toString());
            shape1=lstShap.get(1);
            System.out.println(shape1.toString());
            shape1.put("infected","true");
            lstShap.set(1,shape1);
    
            System.out.println(lstShap.toString());
        }
    }
    

    【讨论】: