public class XXXX{
private List<Integer>[] a;
public XXXX(int num)
{
a = new ....?
}
}
Как я должен НОВО ?как новый список <Integer> [] в Java
public class XXXX{
private List<Integer>[] a;
public XXXX(int num)
{
a = new ....?
}
}
Как я должен НОВО ?как новый список <Integer> [] в Java
a = (List<Integer>[]) new List[num];
for(int i = 0; i < num; i++)
a[i] = new ArrayList<Integer>();
Действительно, хотя, почему бы не объявить a
как List<List<Integer>>
?
@ppeterka: Исправлено – Eric
Список - это интерфейс в java!
вы можете дать ссылки экземпляров как ArrayList, список linket, вектор и стек переменной со списком типов данных
так что вы можете использовать один из следующих вариантов,
a = new ArrayList<Integer>();
a = new LinkedList<Integer>();
a = new Vector()<Integer>;
a = new Stack()<Integer>;
NPE: «Массивы и дженерики не идут хорошо вместе»
перейти к списку списков
List<List<Integer>> a = new ArrayList<List<Integer>>();
или двойной массив
int[][] a = new int[5][5];
Это работает
int arraySize = 10;
List<Integer>[] a = (List<Integer>[]) new List[arraySize];
Это создает массив (размером 10), которые могут содержит Список Integer
Не утруждайте себя чтением первоначальных комментариев, поскольку они ссылаются на неправильную ссылку, и люди спрашивают, почему почему. Это сработало отлично, простой вопрос и простой ответ. Я группировал четыре списка
Вы можете создать массив списков, но вы не можете использовать типа во время инициализации.
List<Integer>[] lists=new List[10];
//insertion
for(int i=0;i<10;i++){
lists[i]=new ArrayList<Integer>();
lists[i].add(i);
lists[i].add(i+1);
}
//printing
for(List<Integer> list:lists){
System.out.println(list.size());
}
Почему это работает? Поскольку переменная lists
указывает на структуру данных массива, тип данных которой равен List<Integer>
. Этот массив содержит набор ссылок на разные объекты типа List<Integer>
, и поэтому, если мы попытаемся запустить lists[i]=new ArrayList<String>();
, он не будет компилироваться. Однако, когда мы инициализируем сам массив, нам не нужно предоставлять тип объектов List как List, поскольку из точки JVM объекты List of Integer и объекты List of Object будут иметь такое же количество байтов, что и logn, как их размеры одинаковы. Единственное ограничение возникает, когда мы устанавливаем элемент массива на значение (из списка типа - он должен быть List<Integer>
не что-нибудь еще)
Вы можете печатать закиньте List[]
к, но конечный результат List<Integer>[]
и поведение виртуальной машины Java является одна и та же.
Зачем кому-то нужен этот беспорядок? –
На уровне производства java никто не потребует этого (мы все о Коллекциях и Коллекциях Коллекций), но это хорошая пища для размышлений. –
Никто не использует массивы, если только они не нуждаются в работе с примитивами. массивы в java, возможно, были полезны, если бы они хранились в стеке. –
вы можете сделать как List<Integer> a=new ArrayList<Integer>();
, но не должно быть общим
Массивы и дженерики не идут хорошо вместе. – NPE
Что такое? это массив списка –
Зачем вам нужна такая конструкция? (кроме вопроса интервью или экзамена ...) – ppeterka