2011-12-07 7 views
1

줄이있는 .txt 파일이 있습니다 (제 상황 2). 선을 읽고 각각을 다른 Array로 변환해야합니다. 예 :
1 라인 - A, B, C
2 라인 - D, E, F, G 등
Java의 다른 배열로 행 변환

하고이 변환 :
[A, B, C]
[D , E, F, G]
나는 사항 String.split와 함께이 일을 해요

(",")

ArrayList<String> al_1 = new ArrayList<String>(); 
ArrayList<String> al_2 = new ArrayList<String>(); 
while(true){ 
    String[] line = rbuff.readLine().split(","); 
    for(String i : line){ 
     al_1.add(i); 
    } 
    if(line == null) break; 
} 

두 번째를 채울 수있는 가장 좋은 방법은 무엇입니까? Thx.

답변

3

어쩌면 당신은

ArrayList<ArrayList<String>> al = new ArrayList<ArrayList<String>>(); 

대신

ArrayList<String> al_1 = new ArrayList<String>(); 
ArrayList<String> al_2 = new ArrayList<String>(); 

의 사용 및 목록의 목록을 유지하기 위해 al.add()

+0

아니, 내가해야 할 두 ArrayLists = ( – 4lex1v

+0

즉 *입니다 @JohnGray *이'ArrayLists' –

+1

당신이 rbuff.readLine()가 다시 전년도를 확인해야합니다이 경우. null로 분할하고 두 번째 배열을 채우지 만 사용 사례가 매우 이상합니다. – korifey

1
IMO

쉽게로이 목록을 fullfill에해야합니다.

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

while (true) { 
    List<String> lineList = new ArrayList<String>(); 
    String[] line = rbuff.readLine().split(","); 
    for (String i : line) { 
     lineList.add(i); 
    } 
    lineLists.add(lineList); 
    if (line == null) break; 
} 

(내부 루프 O. 어느 쪽이든/내부 루프 리팩토링되어야 승 배열이나리스트에 즉시 분할하는 임의의 방식이 있다는 것을 무시).

0

이 용액 허용 당신은 당신의 파일의 각 행에 대해 myArrayList에 읽기를 새로운 ArrayList를 추가합니다 :

  List<List<String>> myArrayList = new ArrayList<List<String>>(); 
      List<String> myStrings; 
      while (true) { 
       myStrings = new ArrayList<String>(); 
       String[] line = rbuff.readLine().split(","); 
       for (String i : line) { 
        myStrings.add(i); 
       } 
       myArrayList.add(myStrings); 
       if (line == null) 
        break; 
      } 

당신은 당신의 텍스트 파일의 각 행에 대해 하나 개의 내부 목록과 목록이있을 것이다.

MyArrayList 
| 
|_____List('A', 'B', 'C') 
| 
|_____List('D', 'E', 'F', 'G') 
| 
|_____(...) 
0

음이 꽤 많이 나는 할 줄거야,하지만 당신은 내 ArrayList를 객체로 라인을 필요로하지 않는 경우에, 당신은 배열 문자열을 사용할 수 있다는 언급과 (문자열 []). 다음은 예입니다 : 내 코드의 전부가 아닙니다

private static String s1 = "A,B,C",s2="D,E,F"; 
    private static List<String> lines = new ArrayList<String>(){{add(s1);add(s2);}}; 

    public static void main(String[] args) throws Throwable { 
     Map<Integer,String[]> linesToArraysMap = new HashMap<Integer,String[]>(); 
     for(int i=1;i<=lines.size();i++) { 
      linesToArraysMap.put(i, lines.get(i-1).split(",")); 
      //if you want to get them as ArrayLists you can do: 
      //List<String> lineList = Arrays.asList(lines.get(i-1).split(",")); 
     } 
     for(String[] stringArr:linesToArraysMap.values()) { 
      System.out.println(Arrays.toString(stringArr)); 
     } 
    }