【问题标题】:How to modify an element inside a String[] which is inside an Arraylist inside another Arraylist如何修改另一个 Arraylist 内的 Arraylist 内的 String [] 内的元素
【发布时间】:2016-07-20 02:53:07
【问题描述】:

所以我有两个 Arraylists bBag 代表一个 bigBag 和 sbag1 和 sbag2 代表较小的包。 sbag1 和 sbag2 是包含 String[] 的 Arraylist,它们都在 bBag 中。

import java.util.ArrayList;
import java.util.*;

public class Arraylist1 {

    public static void main(String[] args) {

        ArrayList<ArrayList<String[]>> bBag = new ArrayList<ArrayList<String[]>>();
        ArrayList<String[]> sbag1 = new ArrayList<String[]>();
        ArrayList<String[]> sbag2 = new ArrayList<String[]>();

        String[] s1 = {"this", "is" , "Java", "bruh"};
        String[] s2 = {"It", "rained"};

        sbag1.add(s1);
        sbag1.add(s2);

        String[] s3 = {"today", "is", "20"};

        sbag2.add(s3);

        bBag.add(sbag1);
        bBag.add(sbag2);



    }

我想将 sbag2 的第一个字符串(即今天)修改为“明天”,这样它也可以在 bBag 中被替换。另外我如何显示它?谢谢。

【问题讨论】:

    标签: java arrays string arraylist


    【解决方案1】:

    字符串是不可变的,所以不能直接修改,必须用新字符串替换。您的容器、数组和数组列表保存对内存中对象的引用,而不是对象数据的副本。因此,如果您更改数组,则该更改将对任何持有该数组的 arraylist 和持有该 arraylist 的 arraylist 等可见。

    【讨论】:

      【解决方案2】:

      唯一的方法是从 bBag 遍历到 bBag1 到 s3 并更新它。执行相同的遍历以从 bBag 显示。

      【讨论】:

        【解决方案3】:

        这可能有效,但您需要将字符串替换为新字符串。

        public void modify(int bag, int sbag, Integer pos, String replacement){
            //with bag being 1 or 2
            //with sbag being 1 or 2
            bBag.get(bag-1).get(sbag-1)[pos]= replacement;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-01-23
          • 2013-06-06
          • 1970-01-01
          • 2015-07-06
          • 1970-01-01
          • 2012-03-28
          • 2017-06-03
          • 1970-01-01
          相关资源
          最近更新 更多