2011-11-20 2 views

답변

7

HashMapArrayList은 모두 PHP에서 배열로 간주 할 수 있습니다. ArrayList은 숫자로 색인화되고 HashMap은 키 값 쌍의 모음입니다. PHP는 두 가지 상황을 구분하지 않습니다.

이 특정 선언은 ArrayList (숫자로 색인 된 배열)이며 모든 요소의 유형은 HashMap입니다. 키/값 쌍의 모음 인 각 HashMap의 경우 키의 유형은 String이고 값은 Object입니다.

+0

+1 (아마) Autolycus의 프로필을 확인하고 PHP 비유법을 사용하고 있습니다. – Dave

6

Java에서 일반 유형을 나타냅니다. 당신이 ArrayList을 사용하는 경우 예를 들어,

myBooks = new ArrayList<String>(); 

ArrayList myBook에 저장되는 내용 자바에서 사용할 수있는 문자열 유형이 될 것을 의미합니다 다음과 같이. 다음 문

myBooks = new ArrayList<HashMap<String,Object>>(); 

에서

는 ArrayList를 String 형의 키 입력 개체의 값으로 HasMap을 들고있다.


마찬가지로 일반적인 유형 Collection, List, HashTable 등을 활용할 수 있으며 값의 어떤 종류를 저장할 수 있기 때문에 항상 일반적인 유형을 사용해야합니다. 다음과 같이 단순히 유전 유형 않고 그들을 정의 할 수와 같은

Collection<String> c=new ArrayList<String>(); 

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

Hashtable<String, String> h = new Hashtable<String, String>(); 

.

Collection c=new ArrayList(); 

List list=new ArrayList(); 

Hashtable h=new Hashtable(); 

컴파일러는이 상황에서 전혀 불평하지 않지만 항상 그와 함께 제네릭을 사용하는 것이 좋습니다.

4

이것은 Java generics의 예입니다.

List 또는 Map 또는 Set과 같은 데이터 구조는 모든 종류의 객체를 보유 할 수 있습니다. 제네릭을 사용할 때 컴파일러에게 데이터 구조가 보유하고있는 객체의 유형을 정확하게 알려줍니다.

귀하의 경우 ListMaps입니다. Map에는 String 키와 Object 값이 있습니다.

3

위의 답변은 모두 훌륭합니다.

또한 Generic의 컴파일 시간과 런타임 동작의 차이점을 이해하려면 Java Type Erasure을 읽어보아야합니다.

타입 삭제를 올바르게 이해하면 많은 고통을 덜 수 있습니다.

관련 문제