마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

2차원 Arraylist에 대해서 질문이 있습니다!!

0 추천
코딩 고수님들 부탁드립니다.ㅠㅠ  Arraylist에 대한 질문입니다.!!

data_txt="0 0 1 2 3\n3 4 5 3 2\n...."

public static ArrayList<String> data= new ArrayList<String>(Arrays.asList(data_txt.split("\n")))

이런식으로 ArrayList data에 data_txt의 내용을 \n단위로 끊어서 ArrayList로 만든 뒤

public static ArrayList<String[]> list= new ArrayList<String[]>();
 for (int i = 0; i < data.size(); i++)
            list.add(data.get(i).split(" "));

ArrayList list에 \n단위로 끊어서 저장한 data리스트를 " "단위로 다시 끊어서 저장을 했습니다.

각 요소를 stage.get(i)[0], stage.get(i)[1] .... 을 해서 값이 정상적으로 저장이 되어있고, 그 값을 get을 하는 것도 확인이 되었습니다.

이제  " "단위로 끊어서 들어간 값들을 특정 이벤트가 발생되면 변경을 해줘야 하는데

add로 추가가 아닌 변경을 해야하는 부분이라서 set함수를 통해 변경을 해주고자 합니다.

그런데 2차원이다보니 set함수의 매개변수를 어떻게 줘야하는지 모르겠습니다;;

get처럼 set((i)[0],"변경될값") 이런식으로 접근을 하고싶지만 이러한 형태는 지원하지 않는것 같습니다. 생각하는바로는 get(i)[0]~get(i)[4] 로 해당 인덱스의 값을 다른 String형 변수에 저장후에 변경될 값으로 변경해서 String형 배열에 저장을 하고

remove메소드를 통해 해당 인덱스의 값을 지운뒤 add로 다시 저장된 배열을 추가하는 방식이 떠오르는데 아무리 생각을 해도 좀 복잡하고 쓸모없는 작업을 하는것만 같아서 더 깔끔한 방법을 알고 싶습니다.

이러한 형태가 아니더라도 제가 모르는 함수를 통해 다른 방법이 있으면 상관없으니 부탁드립니다.ㅠ
IU (260 포인트) 님이 2018년 12월 31일 질문

1개의 답변

0 추천
 
채택된 답변

ArrayList<ArrayList<String>> 로 하면 될 텐데 굳이 String[] 로 하는 이유가 있나요?

아래는 대충 만든 예제 클래스 입니다.

 방어 코드(인덱스 벗어 났을 때 처리) 같은 거나, 필요한 함수를 추가 해서 사용하시면 될 듯 합니다.

 

    public class  DoubleArray {
        private ArrayList<List<String>> mArrayList;

        private DoubleArray(String data_txt) {

            mArrayList = new ArrayList<List<String>>();

            List<String> list = Arrays.asList(data_txt.split("\n"));
            for (int i = 0; i < list.size(); i++) {
                String[] array = list.get(i).split(" ");
                List<String> list2 = Arrays.asList(array);
                mArrayList.add(list2);
            }
        }

        public void add(int i, int j, String newString) {
            mArrayList.get(i).add(j, newString);
        }

    }

익명사용자 님이 2019년 1월 2일 답변
IU님이 2019년 1월 6일 채택됨
감사합니다!! 님말대로 Arraylist안에 Arraylist로 넣어서 되는거 확인했습니다.

큰 Arraylist안에 있는 배열은 그 사이즈가 5개로 고정이 되는데 Arraylist보다 배열이 속도가 빠르다고 해서 그렇게 할려고 했었는데 그 배열에 각각의 요소값을 변경하고 할려면 Arraylist로 하는것이 맞겠네요 감사합니다.
...