English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste programa, você aprenderá a ordenar uma ArrayList de objetos personalizados com base em um atributo específico no Java.
import java.util.*; public class CustomObject { private String customProperty; public CustomObject(String property) { this.customProperty = property; } public String getCustomProperty() { return this.customProperty; } public static void main(String[] args) { ArrayList<Customobject> list = new ArrayList<>(); list.add(new CustomObject("Z")); list.add(new CustomObject("A")); list.add(new CustomObject("B")); list.add(new CustomObject("X")); list.add(new CustomObject("Aa")); list.sort((o1, o2) -> o1).getCustomProperty().compareTo(o2).getCustomProperty())); for (CustomObject obj : list) { System.out.println(obj.getCustomProperty()); } } }
Quando executar o programa, a saída será:
A Aa B X Z
Na classe CustomObject definida acima, temos um atributo String customProperty
Também adicionamos um construtor que inicializa as propriedades e uma função getter getCustomProperty() que retorna o customProperty
No método main(), criamos uma lista de array de objetos personalizados list e usamos5os objetos foram inicializados.
Para ordenar a lista usando a propriedade fornecida, usamos o método sort() da lista. O método sort() aceita a lista a ser ordenada (a lista ordenada final também é a mesma) e um comparador
Em nosso exemplo, o comparador é uma expressão lambda
da lista o1e o2obtendo dois objetos
usando o método compareTo() para comparar os customProperty de dois objetos
se o1do atributo for maior que o2do atributo, retornando um número positivo; se o1do atributo é menor que o2do atributo, retornando um número negativo; se forem iguais, retornando zero.
Neste caso, a lista (list) é ordenada de acordo com o menor atributo para o maior atributo e armazenada novamente na lista (list)