一、List根據某個欄位排序stream
使用Java 8之後的新特性stream,可以輕鬆地實現根據list中某個欄位排序的功能。
List persons = new ArrayList(); // 添加Person對象到List中 Collections.sort(persons, Comparator.comparing(Person::getName));
上述代碼中,我們定義了一個List<Person>對象,然後使用Collections.sort方法,傳入一個Comparator介面的實現對象,按照Person對象的name欄位進行排序。
同樣的,我們也可以使用Comparator的reversed方法,進行逆序排序。
Collections.sort(persons, Comparator.comparing(Person::getName).reversed());
二、List數組根據某個欄位排序
對於List數組,我們同樣可以使用Arrays.sort方法進行排序。
Person[] persons = new Person[size]; // 添加Person對象到數組中 Arrays.sort(persons, Comparator.comparing(Person::getName));
三、List根據某個欄位排序獲取top
如果我們只需要List中的前幾個元素,可以使用subList方法進行截取。
List persons = new ArrayList(); // 添加Person對象到List中 // 獲取List中前10個Person對象 List<Person> topPersons = persons.stream() .sort(Comparator.comparing(Person::getName)) .limit(10) .collect(Collectors.toList());
四、如何根據list中某個欄位排序
對於List中的元素,我們需要實現Comparable介面,並重寫compareTo方法。
public class Person implements Comparable<Person> { private String name; private int age; public int compareTo(Person o) { return this.name.compareTo(o.getName()); } // get/set方法省略 }
在實現Comparable介面後,我們就可以直接使用Collections.sort()方法進行排序。
五、List根據某個數據排序
如果我們只關心List中某個欄位的數據,可以使用map方法進行轉換。
List<Person> persons = new ArrayList<>(); // 添加Person對象到List中 List<String> names = persons.stream() .map(Person::getName) // 轉換為Name類型的Stream .sorted() // 排序 .collect(Collectors.toList()); // 返回List
六、List根據某個欄位刪除
如果需要根據list中某個欄位進行刪除,我們可以使用Iterator來遍歷List,並使用Iterator的remove方法刪除元素。
List<Person> persons = new ArrayList<>(); // 添加Person對象到List中 Iterator<Person> iterator = persons.iterator(); while (iterator.hasNext()) { Person person = iterator.next(); if (person.getName().equals("John Doe")) { iterator.remove(); // 刪除符合條件的元素 } }
七、List根據字元串長度排序
如果我們需要根據字元串的長度進行排序,可以自定義一個Comparator對象,並在compare方法中使用字元串的length方法來進行判斷。
List<String> strings = new ArrayList<>(); // 添加String對象到List中 Collections.sort(strings, Comparator.comparing(String::length));
八、根據list中某個欄位的值排序
如果需要根據某個欄位的值進行排序,我們可以將該欄位的值提取出來,然後使用自定義的Comparator對象進行排序。
List<Person> persons = new ArrayList<>(); // 添加Person對象到List中 Collections.sort(persons, new Comparator<Person>() { public int compare(Person o1, Person o2) { return o1.getAge() - o2.getAge(); } });
九、List根據兩個欄位去重分組
如果需要對list中的元素進行去重,並根據兩個欄位進行分組,我們可以使用Java 8中提供的Collectors工具。
List<Person> persons = new ArrayList<>(); // 添加Person對象到List中 Map<String, Map<String, List<Person>>> groupedPersons = persons.stream() .collect(Collectors.groupingBy(Person::getName, Collectors.groupingBy(Person::getAddress)));
十、List<map>怎麼根據某個欄位排序
如果List中的元素是Map類型,可以使用Map.Entry類對Key或Value進行排序。
List<Map<String, String>> maps = new ArrayList<>(); // 添加Map對象到List中 Collections.sort(maps, new Comparator<Map<String, String>>() { public int compare(Map<String, String> o1, Map<String, String> o2) { return o1.get("name").compareTo(o2.get("name")); } });
原創文章,作者:CKXT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/138413.html