Kotlin Standard Library simplificada para desenvolvedores Android #1 — Collections: any, find, sumBy, minBy, maxBy

Independentemente do tipo de aplicação que você esteja desenvolvendo, é provável que em algum momento seja necessário utilizar alguma classe que extenda à classe Collections, por isso nessa postagem vamos explorar 5 métodos presentes na biblioteca padrão da linguagem Kotlin que adicionam superpoderes a essas classes. Vamos lá?!

Any

OK, eu tenho uma maçã e um saco cheio de maçãs, como descubro se pelo menos uma das maçãs no saco tem o mesmo peso da que eu tenho em mãos?

val maca = Maca(0.250) //0.250 se refere ao peso
val macas = listOf(Maca(.350), Maca(.152), Maca(.250))
macas.any { it.peso == maca.peso } //true

Nesse caso só existe um parâmetro sendo passado na lambda, razão pela qual fizemos uso do nome implícito it para acessar a propriedade peso.

Como você deve ter percebido, esse método irá retornar true caso pelo menos um dos valores contidos na Collection se encaixe na condição especificada pela lambda.

Find

Ótimo, saber que existe uma maçã igual à que eu tenho em mãos me deixou com fome, então eu quero encontrá-la! E para isso podemos fazer uso do método find:

val maca = Maca(0.250)val macas: List<Maca> = ...val outraMaca: Maca? = macas.find { it.peso == maca.peso }

É importante que você perceba que o valor contido em outraMaca é está marcado com o sinal de interrogação, o que indica que ele pode ser nulo. Por qual razão? Bem, não é possível saber de antemão se o valor que buscamos realmente existe na lista.

SumByDouble

Eu sei, somos pessoas de negócios! O que eu quero com esse monte de maçãs? Melhor eu me livrar delas! Por isso procurei um sacolão aqui na região para negociá-las. Infelizmente eles não se preocupam muito com a quantidade de maçãs, mas sim com o peso total da saca. Hora de obter esse valor! Veja como podemos fazer isso:

val macas = listOf(Maca(.350), Maca(.152), Maca(.250))val pesoTotal = macas.sumByDouble { it.peso } // 0.752

Como o próprio nome indica, o método sumByDouble permite realizar a soma de valores do tipo Double, por isso mapeamos a propriedade de peso para a soma, novamente utilizando o valor implícito it.

MinBy e MaxBy

Negociação concluída! Para terminar a transação o pessoal só me exigiu saber qual das maçãs é a mais leve a qual é a mais pesada para ter uma ideia da diferença entre a variedade de pesos. Para casos como esses, as operações minBy e maxBy são excelentes, olha só:

val macas = listOf(Maca(.350), Maca(.152), Maca(.250))val maisLeve = macas.minBy { it.peso } //Maçã de 152G
val maisPesada = macas.maxBy { it.peso } //Maçã de 350G

Os métodos minBy e maxBy retornam o elemento da lista que contenha o menor e o maior valor respectivamente. Porém, assim como o método find esse elemento pode ser nulo, uma vez que não sabemos se a lista contém algum elemento.


It’s not the amount that counts, it’s the plan that counts. — Jim Rohn

Esse são alguns métodos muito úteis presentes na biblioteca padrão da linguagem Kotlin. Caso você tenha gostado dessa postagem, não se esqueça de deixar alguns claps e recomendá-la para que outras pessoas possam ter acesso. Eu também gostaria de saber alguns métodos que você faz uso em seus aplicativos, então não hesite em deixar um comentário. Ah! E se quiser ser notificado sobre as próximas postagens não se esqueça de me seguir :)

Até mais.

)
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade