2013-08-29 3 views
0

기본적으로 PHP 프로그래머는 자바 바다의 해안에서 궁금해하는 (또는 방황하고 있습니다!). 물론 인생 보트, stackoverflow와 함께.자바의 다차원 배열. 그게 복잡한가?

임은 단순히 가능했다 PHP에서 자바에서 다차원 배열을 만들기 위해 애 쓰고 $array["bla"]["blabla"]["blablabla"]...

이 나는 ​​

$array["user"] = "UserName"; 
$array["groups"] = array("group1","group2","group3"); 
$array["categories"] =array("category1","category2","category3"); 
$array["notification"] = "user notification string"; 
$array["departments"] = array("department1","department2","department3","department4"); 
$array["sub-deptmnt"] = array("department1" => array("subdep1","subdep2"),"department2"=> array("another-subdep1","another-subdep2", "another-subdep3")); 

입니다 PHP에

Array 
(
    [user] => UserName 
    [groups] => Array 
     (
      [0] => group1 
      [1] => group2 
      [2] => group3 
     ) 

    [categories] => Array 
     (
      [0] => category1 
      [1] => category2 
      [2] => category3 
     ) 

    [notification] => user notification string 
    [departments] => Array 
     (
      [0] => department1 
      [1] => department2 
      [2] => department3 
      [3] => department4 
     ) 

    [sub-deptmnt] => Array 
     (
      [department1] => Array 
       (
        [0] => subdep1 
        [1] => subdep2 
       ) 

      [department2] => Array 
       (
        [0] => another-subdep1 
        [1] => another-subdep2 
        [2] => another-subdep3 
       ) 

     ) 

) 

를 달성하기 위해 원하는 것을 누군가 제발 움직여주세요. ..

편집 :이 같은 개체를 정의

class Whatever { 
    private final String username; 
    private final List<Group> groups; 
    ... 
} 
class Group { 
    ... 
} 
+2

왜이 용도로 사용하지 않습니까? –

+0

[Java 다차원 배열] 가능한 복제본 (http://stackoverflow.com/questions/1067073/java-multidimensional-array) –

+0

json 문자열 –

답변

4

좋은 연습을 사용하여 원하는 배열을 명확히하기 위해 이에 대한 유형이 지정되지 않은 배열을 사용하는 것이 아니라 실제 타입의 객체를 만들 수 없습니다

class SampleModel{ 

     String userName; 
     List<String> groups ; 
     List<String> categories; 
     String notification; 
     List<String> departments; 
     Map<String,List<String>> sub_deptmnt; 

     //getter and setter 
    } 
+0

포스터에 그가 자바를 처음 접했기 때문에 '최종'및 '비공개'키워드가 필요합니까? [private] (http://www.tutorialspot.com/java/java_access_modifiers.htm) [최종] (http://www.java-examples.com/java-final-variable-example) –

+0

아니요, 좋은 습관. –

1

: 자바에서이 같은 코드를 PHP를 예를

0

당신이 앞으로 키가 될 것 무엇 시간을 알고 있다면, 그때는 필드와 게터/setter 메소드 프라 바카 당신을 보여 방식에 클래스를 설정하는 것이 가장 좋습니다.

키가 동적 일 수있는 경우 : PHP의 연관 배열과 동일한 것은 Map<String,Object>입니다. ,

String userName = (String)(arr.get ("user")); 

당신은 배열의 배열에 요소, 또는 ArrayList의, 또는 다른 Map<String,Object> 맵을 설정할 수 있습니다

Map<String,Object> arr = new HashMap<String,Object>(); 

그런 다음 배열 요소 만들려면 다음

arr.put ("user", userName); 

을하고 검색 할 수 다차원 배열 가져 오기. 건은,하지만, 자바는 강하게 get 방법은 개체를 반환합니다 즉, 입력, 당신은 당신이 될 것으로 예상되는 유형으로 캐스팅 할 필요가 있습니다 :

String[] categories = (String[])(arr.get ("categories")); 

또는

ArrayList<String> categories = (ArrayList<String>)(arr.get ("categories")); 

"카테고리"에 대해 이전에 저장 한 객체의 유형이 잘못된 경우 예외가 발생합니다.

다른 것이 없다면 적어도 collections tutorial을 살펴 봐야합니다. Java로 작업하는 경우 확실히 알아야 할 내용입니다.

[참고 : 위의 코드는 아직 테스트하지 않았습니다. 제 생각에는 맞았습니다.]