2016-07-20 5 views
1

したがって、私は2人のArraylists bBagがbigBagを表し、sbag1とsbag2が小さい方の袋を表します。 sbag1とsbag2はString []を含むArraylistで、両方ともbBagの内側にあります。別のArraylist内のArraylist内にあるString []内の要素を変更する方法

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



    } 

私はそれは同様bBagで交換されることを「Tomorrow'suchに(すなわち今日)sbag2の第一の文字列を変更したいです。また、私はそれをどのように表示するのですか?ありがとう。

答えて

2

文字列は不変なので、直接変更することはできません。文字列を新しい文字列に置き換える必要があります。あなたのコンテナ、配列、およびarraylistは、オブジェクトデータのコピーではなく、メモリ内のオブジェクトへの参照を保持します。配列を変更すると配列を保持しているarraylistとそのarraylistなどを保持しているarraylistにその変更が見えます。

0

bBagをbBag1からs3にトラバースして更新するしか方法はありません。 bBagから同じトラバーサルを表示します。

0

これは機能するかもしれませんが、文字列を新しいものに置き換える必要があります。

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; 
} 
関連する問題