2012-03-13 3 views
0

개체 배열 올바른 사용 방법? 내가 가진 무엇

public static LinkedList<Mp3> musicList;   
... 
if (musicList == null) { 
    musicList = new LinkedList<Mp3>(); 
}//create... this works 

하지만 난 5 개 이상의 목록과 같은 경우 어떻게 같은 것을 수행 할 수 있습니다

Object[] ob = new Object[]{musicList,musicList2,...,musicList10}; 

for (int i = 0; i < ob.length; i++){ 
    if (ob[i] == null) ob[i] = new LinkedList<Mp3>(); 
} 

나는 그것이 작동하고 첫 번째 방법에 넣어 경우를; 두 번째 발췌 문장에 어떻게 넣을 수 있습니까?

답변

2

보고 배열을 만드는 데 사용됩니다.

배열의 참조는 초기화에 있던 사본입니다.

당신이해야 할 일은 musicListN 변수를 없애고 배열 만 가지고 있거나 List를 사용하는 것입니다.

List<List<Mp3>> musicLists = new ArrayList<List<Mp3>>(LIST_COUNT); 
for (int i = 0; i < LIST_COUNT; i++) { 
    musicLists.add(new LinkedList<Mp3>()); 
} 

그런 다음 이전 변수를 사용했던 모든 곳에서 musicLists.get()을 사용하십시오.

+0

이것은 내가 찾고 있었던 것이다! – Hia

+0

내 코드에서 구현했지만, 질문이 1 개 더 있습니다. LIST_COUNT를 5로 초기화하면 10의 목록이 생성됩니까? 그래서 musicLists.size()를 보면 = 2xLIST_COUNT입니다. – Hia

+0

@Hia for 루프는 한 번 이상 실행됩니다. 목록을 초기화하기 전에 목록이 비어 있는지 확인해야합니다. –

4

배열과 제네릭을 혼합하지 마십시오.

대신

,이 사항을 고려하십시오

List<List<Mp3>> listsList = new ArrayList<List<Mp3>>(); 
listsList.add(new LinkedList<Mp3>()); 
+0

답변 해 주셔서 감사합니다. 나는이 방법을 시도합니다 ..하지만 내 코드를 줄이는 대신에 더 길게 만들 것입니다 : D – Hia

+0

제네릭 컬렉션 만 사용하는 개념을 명확하게하기 위해 초기화하는 방법을 무시했습니다. 조금 길어질 수도 있지만, 하지만 IMHO가 더 좋아질 것입니다. – MByD

0

을 당신이 정말로 하나 개의 라인 개체 목록 초기화를 수행 할 경우, 원래의 참조를 변경하지 않습니다 배열의 참조를 변경이 Q. Initialization of an ArrayList in one line