Open leandromoraesrj opened 2 years ago
for percorrendo os itens da lista usando quando há a necessidade de saber em qual posição está:
for(int i=0;i<contatos.size();i++){ System.out.println(contatos.get(i).getNome()); }
Percorrendo um for no java 6-:
for (String item : someList) {
System.out.println(item);
}
Convertendo um Iterator em um ArrayList:
StreamSupport.stream(service.buscar().spliterator(), false).collect(Collectors.toList());
Convertendo Map para Array:
Map<Integer, String> sourceMap = null;
String[] targetArray = sourceMap.values().toArray(new String[0]);
Convertendo Long para Inteiro e vice-versa:
Integer i = theLong.intValue();
Long.valueOf(i);
Convertendo um ArrayList em um Array;
List<MapSqlParameterSource> params = new ArrayList<MapSqlParameterSource>();
params.toArray(new MapSqlParameterSource[params.size()]);
ou
//Não funciona no java 8
List<MapSqlParameterSource> params = new ArrayList<MapSqlParameterSource>();
params.toArray(MapSqlParameterSource[]::new)
ou
List<MapSqlParameterSource> params = new ArrayList<MapSqlParameterSource>();
params.stream().toArray(n -> new MapSqlParameterSource[n]);
ou
List<MapSqlParameterSource> params = new ArrayList<MapSqlParameterSource>();
params.stream().toArray(MapSqlParameterSource[]::new);
forEach percorrendo os itens da lista usando reference method:
lista.forEach(System.out::println);
OBS:é só uma forma mais elegante e enxuta de se escrever uma expressão lambda cuja única tarefa é de invocar um método.
forEach percorrendo os itens da lista usando Lambda:
lista.forEach(n -> {
logger.info(n.getNome());
}
);
ou
lista.forEach(n -> logger.info(n.getNome()));
ou em caso de Map
lista.forEach((k, v) -> logger.info("Key : " + k + ", Value : " + v));
ArraysList usando addAll com Array.asList:
lista.addAll(Arrays.asList(new RegimeApuracao(), new RegimeApuracao()));
HashSet com Array.asList:
estab1.setTiposUnidadeEstabelecimento(new HashSet<TipoUnidadeEstabelecimento>(Arrays.asList(tipoUnidade)));
stream funciona semelhante a uma query, você pode colocar limit, distinct, filter, order e converter para uma List e Map:
Stream<String> stream = pessoas.stream().filter(pessoa -> pessoa.getNacionalidade().equals("Brasil").sorted(Comparator.comparing(Pessoa::getNome));
Stream<String> stream = pessoas.stream().distinct();
regimes.stream().map(UnidadeEmpresarialDTO::new).collect(Collectors.toList());
Exemplo de unique/distinct para um atributo de uma classe:
Collection<ContribuinteVO> uniqContribuinte = mapExercicioContribuinte.get(n).stream()
.collect(Collectors.toMap(ContribuinteVO::getNome, Function.identity(),
(contribuinteVO1, contribuinteVO2) -> contribuinteVO1)).values();
Exemplo de sort para um atributo de uma classe:
List<ContribuinteVO> sortedList = listaContribuintes.stream()
.sorted(Comparator.comparing(ContribuinteVO::getNome))
.collect(Collectors.toList());
sortedList.stream().forEach(c -> {
}
mais conteúdo explicando sort, consumer etc https://www.alura.com.br/conteudo/java8-lambdas?gclid=Cj0KCQiApL2QBhC8ARIsAGMm-KENUCBNnZXOG5jsCjY4S9LfcTN6SuyvMhjNkqOzmUJDQyB_nZx2z7EaAiqGEALw_wcB
isEmpty usado ao obter uma List:
regimeService.deleteTodos();
List<RegimeApuracao> regimes = regimeService.listarTodos();
if (!regimes.isEmpty()) logger.info(regimes.toString());
else logger.info("Nenhum Regime de Apuração Encontrado!");
orElse usado para obter um Optional:
RegimeApuracao regime3 = regimeService.obterPorCodigo(0).orElse(null);
if (regime3 != null) logger.info(regime3.toString());
No Java 8 incluíram o container "Opcional" que carregará o objeto(via generics) instanciado ou null. Esse recurso vai te ajudar a diminuir a quantidade de NullPointerException na sua aplicação/API por causa da possibilidade de trabalhar com objetos sem valor. Exemplo:
Opcional p = em.findById(1);
return p.orElse(null);
Não é possível usar Optional com List;
Mais conteúdo sobre Optional https://imasters.com.br/back-end/como-usar-o-optional-do-java-8-com-jpa-hibernate
Verificar a diferença em objeto e tipo primitivo O == do Java compara referências de memória ao invés de comparar o texto armazenado no objeto. Quando usamos tipos primitivos (int, double, boolean, etc.) ele se comporta sempre como o esperado, mas com objetos (wrappers) como String, Integer, Long etc, deve-se usar o "equals" e SOMENTE, quando não estiver null. Outra opção é instanciar como Optional:
Optional<String> linha = Optional.ofNullable(reader.readLine()));
if (linha.isPresent()) String raizCnpj = linha.get().substring(0, 8);
Usar % para comparação
linhas.size() % maxQuantidadeLinhaLidas == 0
Usar ? 0:1 para comparação int teste = (1 == 2 ? 0:1);