Параметризованные типы - PullRequest
1 голос
/ 06 января 2011

Я из .Net фона и не понимаю следующий фрагмент. Может кто-нибудь объяснить мне <> и следующий код, потому что я, кажется, не понимаю. Извините за глупые вопросы, но этот я пытался понять весь вечер.

List<double[]> x = new ArrayList<double[]>();

for (int i = 0; i < 3; i++) {
  x.add(new double[] { 1, 2, 3, 4, 5, 6 });
}

Ответы [ 4 ]

2 голосов
/ 06 января 2011

Они эквивалентны дженерикам C #.Он создает список двойных массивов, затем добавляет к нему [1,2,3,4,5,6] три раза.

1 голос
/ 06 января 2011

Если вы создаете List<T>, вы можете добавить экземпляр T в список.В этом случае T равно double[].

0 голосов
/ 06 января 2011

Для списка параметр типа в <> указывает, какой тип объектов должен храниться в этом списке. List<double []> создает список, в котором хранятся массивы двойников.

List<double []> myList = new ArrayList<Double>();
myList.add(new double [] {1,2,3});
myList.add(new double [] {4,5,6});

Добавил бы два двойных массива в myList. Итак: myList.get (0) вернет: {1,2,3} и myList.get (1) вернет: {4,5,6}.

Если вы пытаетесь просто создать список двойников, а не список двойных массивов, вы должны сделать:

List<Double> myList = new ArrayList<Double>();
myList.add(1);
myList.add(2);
myList.add(3);

Теперь myList.get (0) вернет 1, а myList.get (1) вернет 2. Обратите внимание, что для создания списка примитивного типа необходимо указать версию объекта этого примитивного типа в параметре type , То есть вы не можете сделать: List<double>

Это потому, что все параметры типа просто преобразуются компилятором в Object.

0 голосов
/ 06 января 2011

В языке программирования Java массивы являются объектами и могут быть назначены переменным типа java.lang.Object.Ваш код также может быть написан следующим образом

Объект числа = новый двойной [] {1, 2, 3, 4, 5, 6};

Ваш код

List<double[]> x = new ArrayList<double[]>();

for (int i = 0; i < 3; i++) {
  x.add(numbers);
}

Еще один вариант: здесь я создал "x" в виде списка, который может содержать типы объектов.Так как массивы являются подклассами Object в Java, я могу хранить массивы в этом списке "x"

List<Object> x=new ArrayList<Object>();

for (int i = 0; i < 3; i++) {
    x.add(numbers);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...