Possuo duas listas de tamanhos diferentes, onde preciso preencher com o valor 0 alguns indices da lista 2, que só existem na 1. Exemplo:
As listas são essas acima. Eu preciso preencher com zero as colunas 00:30, 00:45, 01:00 e 01:15 que não existem na lista de baixo. Como eu posso fazer isso?
Olá. Não ficou clara a sua necessidade como por exemplo qual seria o valor a ser assumido na saida para as colunas existentes.
Por exemplo a coluna 00:00 que existe nas duas listas qual seria o valor a permanecer? ( 0.2 ou 0.222 ?)
Mas pre supondo algumas coisas gerei um exemplo pra ver se te ajuda:
packagemain;importjava.util.ArrayList;importjava.util.List;importjava.util.Optional;publicclassGuj{publicstaticvoidmain(String[]args){// Lista 1List<Hora>listaUm=newArrayList<Hora>();listaUm.add(newHora("00:00",0.2f));listaUm.add(newHora("00:15",0.3f));listaUm.add(newHora("00:30",0.175f));listaUm.add(newHora("00:45",0.222f));listaUm.add(newHora("01:00",0.452f));listaUm.add(newHora("01:15",0.732f));listaUm.add(newHora("01:30",0.111f));listaUm.add(newHora("01:45",0.92f));// Lista 2List<Hora>listaDois=newArrayList<Hora>();listaDois.add(newHora("00:00",0.222f));listaDois.add(newHora("00:15",0.452f));listaDois.add(newHora("01:30",0.732f));listaDois.add(newHora("01:45",0.212f));// lista de filtros para gerar a saidaList<Hora>listaTres=newArrayList<Hora>();// percorrendo a lista um em busca de valores que não estejam presentesfor(Horahora:listaUm){// testo cada item da lista 1 sobre a lista 2.Optional<Hora>teste=listaDois.stream().filter(horaObj->horaObj.equals(hora)).findAny();if(teste.isPresent()){// Se encontrar a coluna adiciona a coluna na lista 3 com o valor originallistaTres.add(teste.get());}else{// Se não encontrar a coluna adiciona a coluna na lista 3 com o valor 0listaTres.add(newHora(hora.getHora(),0f));}}// impressao da listalistaTres.forEach(s->{System.out.println(s.getHora()+" - "+s.getValor());});}}classHora{privateStringhora;privatefloatvalor;publicHora(Stringhora,floatvalor){super();this.hora=hora;this.valor=valor;}publicStringgetHora(){returnhora;}publicvoidsetHora(Stringhora){this.hora=hora;}publicfloatgetValor(){returnvalor;}publicvoidsetValor(floatvalor){this.valor=valor;}booleanequals(Horaobj){returnthis.hora.equals(obj.getHora())?true:false;}}
Essa comparação que você fez é exatamente o que eu preciso, mas não tô conseguindo implementar aqui, porque aqui no meu caso, eu tenho uma List para usar como refencia para comparar os horarios, mas estou comparando ela com um objeto de um outro tipo. E na hora de preencher a lista 3, não estou conseguindo também.