【java】对ArrayList中的元素进行排序的几种方式
对ArrayList中的元素进行排序的几种方式
一、使用Collections工具类
1、对基本类型排序
通过Collections.sort()对基本类型排序默认是以升序排序
// 1.Collections.sort()默认按照升序排序 List integerList = new ArrayList(); Collections.addAll(integerList,1,2,6,5,5,4,55,4,5,5,4,5,2,4,6,2,45); Collections.sort(integerList); System.out.println(integerList);
2、对字符串类型排序
对字符串类型排序默认按照首字母a-z排序
// 2.对字符串类型排序 List strings = new ArrayList(); Collections.addAll(strings,"d","gsf","trh","fsd","an"); Collections.sort(strings); System.out.println(strings);
3、对对象排序
如何使用Collections对对象排序呢?
其实只需要让我们的数据类型实现Comparable接口即可,下面定义一个实现Comparable接口的学生类,并且实现compareTo方法,让学生类只比较年龄。
/**
* 学生
*
* @author ez4sterben
* @date 2023/07/18
*/
public class Student implements Comparable {
private String id;
private String name;
private Integer age;
private String sex;
@Override
public String toString() {
return "Student{" +
"age=" + age +
'}';
}
public Student(Integer age) {
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public int compareTo(Student o) {
// 这种是升序
return this.getAge() - o.getAge();
// 这种是降序
// return o.getAge() - this.getAge();
}
}
排序方法和正常使用一样,直接把整个list传入即可
// 3.对对象排序
List students = new ArrayList();
Collections.addAll(students,
new Student(18),
new Student(26),
new Student(20),
new Student(16),
new Student(12));
System.out.println(students);
Collections.sort(students);
System.out.println(students);
二、使用stream流
// 2.lambda表达式
Stream sorted = integerList.stream().sorted();
System.out.println(Arrays.toString(sorted.toArray()));
三、使用排序算法(以冒泡排序为例)
// 3.直接使用排序算法(以冒泡排序为例)
for(int i = 0; i integerList.get(j + 1)){
Integer temp = integerList.get(j);
integerList.set(j, integerList.get(j + 1));
integerList.set(j + 1, temp);
}
}
}
System.out.println(integerList);
四、测试类整体代码
import java.util.*;
import java.util.stream.Stream;
/**
* 数组列表排序
*
* @author ez4sterben
* @date 2023/07/19
*/
public class ArrayListSort {
public static void main(String[] args) {
List integerList = new ArrayList();
Collections.addAll(integerList,1,2,6,5,5,4,55,4,5,5,4,5,2,4,6,2,45);
// 1.Collections.sort()默认按照升序排序
Collections.sort(integerList);
System.out.println(integerList);
// 2.对字符串类型排序
List strings = new ArrayList();
Collections.addAll(strings,"d","gsf","trh","fsd","an");
Collections.sort(strings);
System.out.println(strings);
// 3.对对象排序
List students = new ArrayList();
Collections.addAll(students,
new Student(18),
new Student(26),
new Student(20),
new Student(16),
new Student(12));
System.out.println(students);
Collections.sort(students);
System.out.println(students);
// 2.lambda表达式
Stream sorted = integerList.stream().sorted();
System.out.println(Arrays.toString(sorted.toArray()));
// 3.直接使用排序算法(以冒泡排序为例)
for(int i = 0; i integerList.get(j + 1)){
Integer temp = integerList.get(j);
integerList.set(j, integerList.get(j + 1));
integerList.set(j + 1, temp);
}
}
}
System.out.println(integerList);
}
}
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




