Giter VIP home page Giter VIP logo

Comments (7)

dor-95 avatar dor-95 commented on August 12, 2024 1

Então @Saul-Medeiros, pelo que pude perceber o IF acaba realizando a conferência quando o número possui apenas 1 dígito, não sendo necessário entrar uma vez no laço do FOR e retornando ele mesmo para fazer parte da soma. Ou seja, ele acaba economizando algumas interações do FOR.

from ganhando_produtividade_com_stream_api_java.

Saul-Medeiros avatar Saul-Medeiros commented on August 12, 2024 1

neste caso, não passando pelo laço ele seria mais rápido 🤔? é pq na minha concepção quanto menos código vc escrever é melhor, e pra cada número que o mapForInt* for testar ele vai ser obrigado a passar por esse if e pelo próprio for.
No caso do seu código ele vai retornar o numero quando o tamanho dele for 0, ou seja inexistente. Se por via das dúvidas ainda tiver um "null" no array, acredito que poderia lançar uma exception.

from ganhando_produtividade_com_stream_api_java.

Leticiassb avatar Leticiassb commented on August 12, 2024 1

Olá, Camila. Fiquei com dúvida se a resolução esta certa. Até vi os comentarios dos outros colegas mas ainda sim não tenho certeza se segui a linha de raciocinio correta
image

from ganhando_produtividade_com_stream_api_java.

cami-la avatar cami-la commented on August 12, 2024 1

Olá, Camila. Fiquei com dúvida se a resolução esta certa. Até vi os comentarios dos outros colegas mas ainda sim não tenho certeza se segui a linha de raciocinio correta image

Certinho, @Leticiassb. O Reduce vai passar pela lista pegando todos os números e ir somando um a um.

from ganhando_produtividade_com_stream_api_java.

jeziel-almeida avatar jeziel-almeida commented on August 12, 2024

Só usar o reduce:

numeros.stream().reduce(0, Integer::sum);

ou

numeros.stream().reduce(0, (n1, n2) -> n1 + n2);

from ganhando_produtividade_com_stream_api_java.

Saul-Medeiros avatar Saul-Medeiros commented on August 12, 2024

acho que vc pode remover aquele if do começo, e retornar apenas sum. Eu fiz assim

int somaDigitos = numeros.stream().mapToInt(n1 -> {
            int sum = 0, length = String.valueOf(n1).length();
            for (int i = 0; i < length; i++) {
                sum += n1 % 10;
                n1 /= 10;
            }
            return sum;
        }).sum();

o sum retorna 0 se o numero em questão nao existir, pois o for já faz essa verificação, se o numero não existir ele passa direto pelo laço e retorna 0

from ganhando_produtividade_com_stream_api_java.

dor-95 avatar dor-95 commented on August 12, 2024

Rapaz, nem tinha parado para testar o tempo, agora fiz um teste básico com o System.currentTimeMillis(), no array que ta ali nessa descrição com e sem o if o resultado foi 0 ms. Pode ser que fique melhor sem o IF mesmo, mais legível.

Nesse exercício, como temos que somar todos os dígitos, esse IF verifica quantos dígitos tem o número e caso ele tenha apenas um (exemplo: 5) ele já retorna esse resultado devido o return, debuguei no Intellij pra ver kk. Agora no caso de algum número com mais de um dígito (exemplo: 245), ele segue para o FOR para decompor e realizar a somatório. No caso de ter um null, ele lança a exceção com ou sem o IF.

from ganhando_produtividade_com_stream_api_java.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.