2017-03-20 3 views
0

을 반대하는 컬럼의 이름은 열 값은 키이며, 에 저장됩니다.ArrayList를 변환하는 가장 쉬운 방법은 내가</p> <p><code>Map<String,ArrayList<String></code></p> <p>지금의 형태로 데이터베이스에서 내 데이터를 수신하고 [] []

ArrayList<String> 

데이터를 표시하려면이 해시를 Object [][] data;으로 변환해야합니다.

저는 루프와 같은 간단한 솔루션이 얼마나 효과적인지 알고 있습니다. 하지만 난 처음에 나는

Map<String, ArrayList<String>> res 
을 가지고, 내가

8.의가 있다고 가정 해 봅시다 자바를 사용하고

ArrayList<String>Object[][] data

을 변환 할 수있는 짧은 솔루션이 무엇인지 알고 싶습니다

포인트 :

나는 데이터가 ArrayList<String>에 있다는 것을 의미합니다, 나는 데이터에 수직적으로 접근 할 수 있습니다. 그러나 나는 Object [][]에 어떻게 든 수평 적입니다.

은 내가 한편, ArrayList<String>가 열이에 대한

+0

, 당신은 res.values ​​()를 사용할 수 있습니다. toArray()를 ArrayList를 얻을 [],하지만 그 시점에서 당신은 루프가하려는 배열을 통해 모든 변환 배열에 arraylists. –

+1

예, 요점은 수직으로 값을 가졌기 때문에 수평으로 만들어야합니다. – Salman

+1

입력과 출력의 관계를 설명하지 않았습니다. 표준 루프를 사용하여 변환을 시연하는 것이 도움이 될 수 있습니다. – shmosel

답변

2

어떻게 그렇게 Object [][] 것, res 데이터베이스 테이블입니다 말했듯이?

Object[][] result = res.entrySet() 
         .stream() 
         .map(e -> e.getValue().toArray()) 
         .collect(Collectors.toList()) 
         .toArray(new Object[0][0]); 

결과 배열의 크기는 result[col][row]입니다. 그래서 반복 할 때 :

+2

'res.values ​​(). stream(). map (List :: toArray) .toArray (Object [] [] :: new)' – shmosel

0

Java 8은 위의 대답에서 @Gerald가 잘 설명한대로 데이터 오브젝트로 변환하기위한 효율적인 솔루션을 제공합니다.
그러나 순진한 접근 방식으로이 작업을 수행하는 데 관심이 있다면 다음 코드를 구현했습니다. 출발점으로

Map<String, ArrayList<String>> map = new HashMap<>(); 
    String[] arr1 = { "I", "am", "good" }; 
    List<String> list = Arrays.asList(arr1); 
    map.put("Max", new ArrayList<String>(list)); 

    arr1 = new String[]{"I", "am", "always", "excited"}; 
    list = Arrays.asList(arr1); 
    map.put("Peter", new ArrayList<String>(list)); 

    System.out.println(map); 
    // OUTPUT: {Max=[I, am, good], Peter=[I, am, always, excited]} 

    Object[][] data = new Object[map.size()][]; 
    int i = 0; 

    // iterate the map and store to Object data 
    for(Map.Entry<String, ArrayList<String>> entry : map.entrySet()) { 
     data[i] = new Object[entry.getValue().size() + 1]; // number of records from list + (One) map key 

     data[i][0] = entry.getKey(); // save key at '0'th index 
     int j = 1;     // iterate the ArrayList to save values in the same row. 
     for(String s : entry.getValue()) { 
      data[i][j++] = s; 
     } 
     i++; 
    } 

    // Printing the data object 
    for(i = 0; i < data.length; i++) { 
     for(int j = 0; j < data[i].length; j++) { 
      System.out.print(data[i][j] + " "); 
     } 
     System.out.println(); 
    } 

    // OUTPUT : 
    //Max I am good 
    //Peter I am always excited 
관련 문제