2010-12-16 8 views
1

두 개의 배열을 병합하지 않고 병합하여 이름 값 쌍의 배열이되도록합니다.Java에서 두 개의 배열을 병합하는 방법은 무엇입니까?

firstarray = ["a","aa","aaa"] 
secondarray = ["b","bb","bbb"] 
result = [["a","b"],["aa","bb"],["aaa","bbb"]] 

가장 좋은 방법은 무엇입니까?

+0

이름 값 쌍을 원하면 Hashtable이 더 좋지 않습니까? – Skilldrick

+0

Java와 JavaScript는 서로 다른 두 가지 요소입니다. –

+0

자바 또는 자바 스크립트를 말하고 있습니까? 제공하는 코드는 의사 코드 또는 JavaScript 일 수 있습니다. – BoltClock

답변

4

는 :

public static int [][] concat(int a[], int b[]) { 
    int res[][] = new int[a.length][2]; 
    if (a.length != b.length) { 
     throw new IllegalArgumentException("lenght are not equal, cannot perform"); 
    } 
    for (int i = 0; i < a.length; i++) { 
     res[i][0] = a[i]; 
     res[i][1] = b[i]; 
    } 
    return res; 
} 
2
var result = []; 

for(var i = 0; i<firstarray.length; i++) { 
    result[i] = [firstarray[i], secondarray[i]]; 
} 

일대일 관계가있는 2 개의 배열에 의존합니다. 자바

1

난 당신이 자바 컬렉션 클래스를 사용하는 것이 좋습니다, 및 배열을 사용하지 않는 것입니다. 배열을 사용해야하는 경우에만 사용하십시오 (예 : 성능상의 이유로). 그렇지 않으면, 학습을 계속하고 Java Collections API에 훨씬 능숙 해집니다.

이 문제에 접근하려면 첫 번째 목록에 고유 항목 (중복되지 않음)이 있다고 가정하면 목록의 두 인스턴스 (배열과 반대)가 생깁니다. 그리고 나서 두 목록의 내용을 넣을 Map 인스턴스를 만듭니다. LinkedHashMap은 첫 번째 목록의 항목 순서를 유지하는 데 사용됩니다. 하나는 첫 번째 목록은 고유 한 값을 가지고 가정 할 수없는 경우

List<String> first = Arrays.asList(new String[] {"a", "aa", "aaa"}); 
List<String> second = Arrays.asList(new String[] {"b", "bb", "bbb"}); 
Map<String, String> keyValuePairs = new LinkedHashMap<String, String>(); 
for (int i = 0, count = first.size(); i < count; ++i) { 
    keyValuePairs.put(first.get(i), second.get(i)); 
} 

, 그때 List<List<String>>을 사용합니다 :

다음은 예제 코드입니다. - 당신은 자바 컬렉션 클래스로 원하는 일을 할 방법이없는 경우를 제외하고 배열의 사용을 피 나는 충분히이 점을 강화 수 있다고 생각하지 않습니다

List<String> first = Arrays.asList(new String[] {"a", "aa", "aaa"}); 
List<String> second = Arrays.asList(new String[] {"b", "bb", "bbb"}); 
List<List<String>> listOfList= new ArrayList<List<String>>(); 
for (int i = 0, count = first.size(); i < count; ++i) { 
    List<String> list = new ArrayList(); 
    list.add(first.get(i)); 
    list.add(second.get(i)); 
    listOfList.add(list); 
} 

다음은 예제 코드입니다. 내가 배열을 사용하는 유일한 시간은 검증할만한 병목 상태에서 성능을 향상시키는 것입니다. 그리고 나서도 Java 배열을 사용하는 것과 달리 성능을 향상시키는 디자인 수준의 방법을 찾으려고 노력합니다.

+1

맵을 사용하면 항목을 순서대로 저장하지 않습니다 ('LinkedHashMap'을 사용하지 않는 한). 또한 배열을 사용하는 것이 컬렉션 클래스를 사용하는 것보다 빠르다고 생각합니다. 또한 첫 번째 배열/목록의 두 항목이 같은 경우 여기에서 사용하는이 방법은 실패합니다. –

+0

@ SimonAndréForsberg 우수 포인트. 의견에 감사드립니다. 귀하의 포인트를 해결할 수있는 답변을 업데이트했습니다. – chaotic3quilibrium

관련 문제