Controle de ranking com JAVA 8

1 resposta
java
E

Pessoal,

Gostaria da ajuda de vocês para obter ideias de como fazer o seguinte algoritmo em Java 8:

Classe base (criei apenas para ilustrar o que preciso fazer)

`public class Lance {

private Long cdLance;
private Integer nuRanking;
private BigDecimal vlLance;

public Lance(Long cdLance, Integer nuRanking, BigDecimal vlLance) {
	super();
	this.cdLance = cdLance;
	this.nuRanking = nuRanking;
	this.vlLance = vlLance;
}...// getters and setters`

Dado que eu possua os seguintes lances:

List<Lance> lances = new ArrayList<Lance>(); lances.add(new Lance(1L, 1, new BigDecimal("10"))); lances.add(new Lance(2L, 2, new BigDecimal("12"))); lances.add(new Lance(3L, 3, new BigDecimal("15")));

Quando eu atualizar o valor de um lance, por exemplo, o valor do lance 2 para 11

Lance lanceDaVez = lances.get(2); lanceDaVez.setVlLance(new BigDecimal("11"));

Então os rankings devem ser redefinidos, por exemplo, para esse caso, ficaria:

Lance [cdLance=1, nuRanking=1, vlLance=10] Lance [cdLance=3, nuRanking=2, vlLance=11] Lance [cdLance=2, nuRanking=3, vlLance=12]

Observem que agora o lance cujo cdLance=2 passou para 3º e o lance com cdLance=3 para 2º

Sei que existem diversas formas de fazer isso, mas gostaria que alguém me desse um exemplo fazendo isso em Java 8, com os métodos contidos na nova API de Stream.

Alguém se habilita?

1 Resposta

Mathob

Tenta isso ai:
lances.sort((lance1, lance2) -> lance1.getVlLance().compareTo(lance2)); lances.forEach((lance) -> lance.setNuRanking(lances.indexOf(lance)));

Verifica se esse comareTo existe mesmo, se não existir, faz isso ai certo rsrs

Criado 20 de abril de 2016
Ultima resposta 21 de abr. de 2016
Respostas 1
Participantes 2