[RESOLVIDO] Converter List<BigDecimal> para Vetor double[]

5 respostas
R

Boa Tarde

Estou montado num sistema para PCP, e uma de suas rotinas é programaçao linear. Para isto estou utilizando o apache.commons.math.

Estou tendo uma dificuldade na hora de criar a LinearObjectiveFunction.

Preciso converter uma List para um vetor double []… que é o campo esperado pelo constructor LinearObjectiveFunction()

alguem poderia me ajudar como converter esta List para double[].

Obrigado

5 Respostas

R

O BigInteger tem o método doubleValue, veja http://download.oracle.com/javase/1.4.2/docs/api/java/math/BigInteger.html#doubleValue%28%29

O seu algoritmo deve:

  1. Criar um vetor de double com o tamanho de números de elementos da lista. Por exemplo, se sua lista tem “X” elementos, seu vetor deverá ser:
    Double[] vet = new Double[X];

  2. Para cada elemento da lista de BigInteger, você deve obter o seu valor em double através do método que disse acima e colocar na posição da iteração atual no vetor.
    Para percorrer, utilize o foreach de java que, na verdade, é representado pelo for “especial”. Veja aqui http://www.guj.com.br/java/49865-for-each-no-java . É importante utilizar esse foreach porque, caso sua list seja do tipo LinkedList, percorrê-la com o for normal tem um impacto negativo na performance.
    Mantenha uma variável que conte o iteração atual do loop.

E pronto.

Você tem alguma dúvida de como fazer algum desses passos?

R

Ah, para obter a quantidade de elementos na sua lista, utilize o método size da interface list

http://download.oracle.com/javase/1.4.2/docs/api/java/util/List.html#size%28%29

X
Veja se te ajuda
double[] d = new double[list.size()];
		
		for (int i = 0; i &lt; list.size(); i++) {
			d[i] = list.get(i).doubleValue();
		}
X

ops, não vi q ja tinha respondido.

R

Obrigado renamed e avsouza.
Implementei aqui o metodo e funcionou sem problemas.

Criado 18 de novembro de 2011
Ultima resposta 18 de nov. de 2011
Respostas 5
Participantes 3