如何修改String []内部的元素,该元素位于另一个Arraylist中的Arraylist中

时间:2016-07-20 02:53:07

标签: java arrays string arraylist

所以我有两个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取代。另外我如何显示它?感谢。

3 个答案:

答案 0 :(得分:2)

字符串是不可变的,因此您无法直接修改它,必须用新字符串替换它。容器,数组和arraylist持有对内存中对象的引用,而不是对象数据的副本。所以,如果你改变了数组,任何拿着阵列的arraylist都会看到那个改变,而arraylist拿着那个arraylist等等。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这可能有效,但您需要将String替换为新的。

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;
}