아래와 같이 arraylist 배열을 만들고 싶습니다.
ArrayList<Individual>[] group = new ArrayList<Individual>()[4]
그러나 컴파일되지 않습니다. 어떻게해야합니까?
답변
당으로 오라클 문서 :
“매개 변수화 된 유형의 배열을 작성할 수 없습니다”
대신, 당신은 할 수 있습니다 :
ArrayList<ArrayList<Individual>> group = new ArrayList<ArrayList<Individual>>(4);
Tom Hawting이 제안한 것처럼 tackline은 다음과 같이하는 것이 좋습니다.
List<List<Individual>> group = new ArrayList<List<Individual>>(4);
답변
다른 사람들이 언급했듯이 다른 목록을 사용하여 ArrayList를 저장하는 것이 더 좋지만 배열을 사용해야하는 경우 :
ArrayList<Individual>[] group = (ArrayList<Individual>[])new ArrayList[4];
답변
이것은 작동합니다 :
ArrayList<String>[] group = new ArrayList[4];
답변
ArrayList를 확장하는 클래스를 만들 수 있습니다
class IndividualList extends ArrayList<Individual> {
}
그런 다음 배열을 만듭니다
IndividualList[] group = new IndividualList[10];
답변
나는 그것을 완전히 이해하지 못한다. 왜 모든 사람들 이이 질문에 대해 배열에 대해 일반적 유형을 제안하고 있는지.
n
다른 배열 목록 을 색인화해야하는 경우 어떻게해야합니까?
선언하면 객체를 수동으로 List<List<Integer>>
만들 n
ArrayList<Integer>
거나 for 루프를 사용하여 n
목록이나 다른 방법 을 만들 필요가 있습니다 . 어쨌든 항상 n
목록 을 만드는 것이 내 의무 입니다.
캐스팅을 통해로 선언하면 좋지 않습니다 List<Integer>[] = (List<Integer>[]) new List<?>[somenumber]
. 나는 모든 색인 객체 (배열 목록)를 스스로 만들 필요가없는 좋은 디자인으로 본다.
왜 이것이 (어레이 폼) 나쁜 디자인이고 그 단점이 무엇인지 깨달을 수 있습니까?
답변
ArrayList의 배열을 만들 수 있습니다
List<Integer>[] outer = new List[number];
for (int i = 0; i < number; i++) {
outer[i] = new ArrayList<>();
}
이것은 이와 같은 시나리오에서 도움이 될 것입니다. 당신은 외부의 크기를 알고 있습니다. 그러나 내면의 크기는 다양합니다. 여기에서 크기가 다양한 배열 목록을 포함하는 고정 길이의 배열을 만들 수 있습니다. 이것이 당신에게 도움이되기를 바랍니다.
에서 자바 8 이상 당신은 더 나은 방법으로 할 수 있습니다.
List<Integer>[] outer = new List[number];
Arrays.setAll(outer, element -> new ArrayList<>());
메소드 참조를 사용 하는 것이 더 좋습니다.
List<Integer>[] outer = new List[10];
Arrays.setAll(outer, ArrayList :: new);
답변
이것은 ArrayList의 배열로 작동합니다. 그것이 어떻게 작동하는지 이해하려고 노력하십시오.
import java.util.*;
public class ArrayOfArrayList {
public static void main(String[] args) {
// Put the length of the array you need
ArrayList<String>[] group = new ArrayList[15];
for (int x = 0; x < group.length; x++) {
group[x] = new ArrayList<>();
}
//Add some thing to first array
group[0].add("Some");
group[0].add("Code");
//Add some thing to Secondarray
group[1].add("In here");
//Try to output 'em
System.out.println(group[0]);
System.out.println(group[1]);
}
}
일부 코드는 Kelvincer에게 제공합니다.