Esta postagem mostra que o código abaixo cria um List
de uma matriz.
double[] features = new double[19];
List<Double> list = new ArrayList(Arrays.asList(features));
Eu estou esperando list
para conter 19 elementos, cada um dos quais é 0.0. No entanto, depois de executar o código acima, list
contém apenas 1 elemento, que é [0.0, 0.0, ..., 0.0]
. Eu estou executando o Java 6 e não tenho certeza se isso está relacionado.
Respostas:
2 para resposta № 1Não "t usar Tipos brutos. Seu features
está vazia. E você não pode fazer uma coleção de um tipo primitivo double
, você precisa Double
.
Double[] features = new Double[19]; // <-- an Object type
Arrays.fill(features, Double.valueOf(1)); // <-- fill the array
List<Double> list = new ArrayList<Double>(Arrays.asList(features));
System.out.println(list);
2 para resposta № 2
Cada array também é um objeto. Você liga para Arrays.asList
cria uma lista com um único elemento, que é a matriz inteira. Então você está criando um List<double[]>
, não uma List<Double>
. Como você estava usando um tipo bruto, o compilador não localizou esse erro e compilou apenas uma mensagem de aviso. Se você tivesse digitado new ArrayList<Double>(Arrays.asList(features))
, seu programa não teria compilado.