문제

나는 PHP와 함께 일하는 데 익숙했지만 최근에는 Java와 함께 일하고 있었고 이것을 알아 내려고 노력하고 있습니다. 이 표현을 Java로 저장하고 싶습니다.

Array ( 
        ["col_name_1"] => Array ( 
                               1 => ["col_value_1"], 
                               2 => ["col_value_2"], 
                               ... , 
                               n => ["col_value_n"] 
                          ),
        ["col_name_n"] => Array ( 
                               1 => ["col_value_1"], 
                               2 => ["col_value_2"], 
                               ... , 
                               n => ["col_value_n"] 
                          )
)

이 물건을 Java로 저장할 수있는 깨끗한 방법 (예 : 더러운 코드 없음)이 있습니까? 메모; 나는 문자열을 배열 인덱스 (1 차원)로 사용하고 싶고 배열의 명확한 크기를 모른다 ..

도움이 되었습니까?

해결책

맵과 목록을 사용할 수 있습니다 (이들 모두는 여러 가지 방법으로 가장 적절한 것을 선택할 수 있도록 하나 이상의 인터페이스입니다).

자세한 내용은 자습서를 확인하십시오 지도 그리고 목록 그리고 아마도 당신은 시작해야합니다 컬렉션 지도 시간.

An example:

import java.util.*;

public class Foo {
    public static void main(String[] args) {
        Map<String, List<String>> m = new HashMap<String, List<String>>();
        List<String> l = new LinkedList<String>();
        l.add("col_value_1");
        l.add("col_value_2");
        //and so on
        m.put("col_name_1",l); //repeat for the rest of the colnames

       //then, to get it you do

       List<String> rl = m.get("col_name_1");

    }
}

다른 팁

a를 사용해보십시오 Map<String, List<String>>. 이렇게하면 문자열을 외부지도에 키 / 인덱스로 사용할 수 있으며 결과를 값으로 문자열 목록으로 만들 수 있습니다. 아마 사용하고 싶을 것입니다 HashMap 외부지도 및 ArrayList내부 목록을위한 것입니다.

초기화하기 위해 제공 한 PHP와 유사한 깨끗한 코드를 원한다면 다음과 같은 작업을 수행 할 수 있습니다.

Map<String, List<String>> columns = new HashMap<String, List<String>>() {{
    put("col_name_1", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
    put("col_name_2", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
    put("col_name_n", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
}};

당신은 원합니다 지도, 그것은 거의 무엇이든 키가 듭니다. 해시 맵대부분의 경우 작동합니다.

이 같은.

List<String> col1Vals = new java.util.ArrayList<String>();
col1Vals.add("col_value_1");
col1Vals.add("col_value_2");
Map<String, List<String>> map = new HashMap<String, List<String>>();
map.put("col_name_1", col1Vals);

더 간단한 것을 원한다면 커먼즈 라인 도서관은 다음과 같습니다 멀티 맵.

그 사실을 미리 알리십시오 벡터 컬렉션 프레임 워크의 레거시 코드입니다. 성능을 늦추는 요소에 대한 액세스를 동기화합니다. 목록을 사용하기위한 대부분의 사용 사례는 이런 종류의 스레드 안전이 필요하지 않으며, 그렇게하더라도 나는 복사 writearraylist.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top