Articles of java 8

Java .parallelStream () com methods com annotations de mola

Eu tente usar o parallelStream() no DAO com annotations Spring @Transactional e obter assim problema: @Transactional public void processCollection(Collection objects) { objects.parallelStream() .forEach(this::processOne); //throw exception } @Transactional public void processOne(Object o) { … } Funciona correto: @Transactional public void processCollection(Collection objects) { objects.stream() .forEach(this::processOne); //work correctly } @Transactional public void processOne(Object o) { … } […]

Por que o heap máximo está mudando em tempo de execução?

Temos um aplicativo Java em execução no openjdk8, cuja memory heap máxima muda em tempo de execução – qual pode ser a razão disso? Eu encontrei a pergunta Por que o heap está mudando em java, que aponta para o artigo que explica a diferença entre memory max e committed . Parece que no nosso […]

Converter InputStream no stream dado um conjunto de caracteres

Eu quero converter um InputStream is em um Stream stream dado um Charset cs de tal forma que o stream consiste nas linhas de is . Além disso, uma linha de is não deve ser lida imediatamente, mas apenas no caso de o stream precisar dela.

Opcional vs jogando uma exceção

É verdade que, desde que o Java 1.8 retornando object Optional é mais preferível do que lançar uma exceção? Cada vez mais eu vejo o código assim: public Optional get(int i) { // do somtething Object result = … Optional.ofNullable(result); } Em vez disso: public Object get(int i) { if(i=size) { throw new IndexOutOfBoundsException(“Index: ” […]

encerramentos em closures groovy vs em java 8 (expressões lambda)?

Dado doSomething(Function foo) { println foo(2) } Groovy: doSomething( { it*it } as Function ) Java: doSomething( (x) -> x*x ) Existe alguma diferença entre os dois?

Como reduzir o curto-circuito no Stream?

Suponha que eu tenha um stream de valores booleanos e a operação de redução que estou escrevendo seja || (OU). Posso escrevê-lo de tal forma que a avaliação de pelo menos alguns dos elementos seja abandonada se um valor true for encontrado? Eu estou procurando por alguma quantidade de otimização (talvez se for um stream […]

Qual é a nova maneira de obter todos os methods de uma class, incluindo os methods padrão herdados do Java 8?

Eu quero obter todos os methods de uma class, incluindo methods públicos, protegidos, pacotes e privados e incluindo methods herdados. Lembrar: Class.getDeclaredMethods() obtém methods públicos, protegidos, pacotes e privados, mas exclui methods herdados. Class.getMethods recebe methods herdados, mas apenas os públicos. Antes do Java 8, poderíamos fazer algo nos moldes de: Collection found = new […]

Por que o combinador da interface do coletor não é consistente com o método de coleta sobrecarregado?

Existe um método de sobrecarga, collect() , na interface Stream com a seguinte assinatura: R collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner) Existe outra versão do collect(Collector collector) , que recebe um object com as três funções anteriores. A propriedade da interface Collector correspondente ao combiner possui o BinaryOperator combiner() . Neste último caso, a API […]

Classificando o ArrayList com o Lambda no Java 8

Alguém poderia me mostrar um exemplo rápido de como classificar um ArrayList em ordem alfabética no Java 8 usando a nova syntax lambda.

Os methods padrão do Java são mais lentos que o mesmo código, mas em uma class abstrata

Eu tenho uma interface PackedObject : public interface PackedObject { int get(); int sum(); void setIndex(int index); default int defaultSum() { return get(); } } Uma class AbstractPackedObject : public abstract class AbstractPackedObject implements PackedObject { protected int index = 0; protected int[] buffer; public void setIndex(int index) { this.index = index; } public void […]