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