用户云卷云舒 发表于 2025-1-11 11:09:31

在Java中实现集合排序

利用字面量的方式创建一个集合

//使用字面量的方式初始化一个List集合
      List<User> userList = Arrays.asList(
                new User("小A",5),
                new User("小鑫",18),
                new User("小昌",8),
                new User("小鑫",8));
注意:利用Arrays.asList() api方法创建出来的集合他是一个固定长度的集合,不能进行集合的添加和删除,否则会抛出 UnsupportedOperationException异常,假如你想要添加或者删除集合元素必须利用如下方式创建集合
List<User> studentList = new ArrayList<>(
        Arrays.asList(new User("杨鑫"), new User("小咪"), new User("科雷"),new User("张宝"))
        );
1、实现Comparable接口,实现集合排序

1.1、实体类实现Comparable接口

package com.maochang.tenancytest.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

@AllArgsConstructor
@NoArgsConstructor
@ToString
@Data
public class Userimplements Comparable<User>{

    private String name;

    private Integer age;

    /**
   * 自定义比较规格
   * @param o the object to be compared.
   * @return
   */
    @Override
    public int compareTo(User o) { //参数对象和当前对象进行比较
      //进行名称比较
      int flag = this.name.compareTo(o.name);
      //代表姓名相同
      if(flag==0){
            //A-B 如果 正数 A>B   负数A<B
            flag=this.age-o.age;
      }
      //返回比较结果
      return flag;
    }
}
1.2、利用集合工具类Collections 进行排序

Collections.sort(userList);
1.3、测试方法

@Test    void test01() {      //使用字面量的方式初始化一个List集合
      List<User> userList = Arrays.asList(
                new User("小A",5),
                new User("小鑫",18),
                new User("小昌",8),
                new User("小鑫",8));
      //集合工具类-排序      System.out.println("排序前:" + userList);      System.out.println("=================开始排序==================");      Collections.sort(userList);
      System.out.println("排序后:" + userList);    } 2、利用Comparator 比较器实现集合对象排序

public class User{
private String name;
private Integer age;
}
Collections.sort(userList,
                (o1, o2) -> {
                  int flag = o1.getName().compareTo(o2.getName());
                  if(flag == 0){
                        flag = o1.getAge() - o2.getAge();
                  }
                  return flag ;
                }
      );
简写优化写法
Collections.sort(userList,
                Comparator.comparing(User::getName).thenComparingInt(User::getAge)
      );
3、利用Stream进行集合对象排序

public class User{
private String name;
private Integer age;
}

//如果实现了Comparable 接口
List<User> collect = userList.stream().sorted().collect(Collectors.toList());

//如果没有实现 Comparable 接口
userList.stream().sorted((o1, o2) -> {
            int flag = o1.getName().compareTo(o2.getName());
            if(flag == 0){
                flag = o1.getAge() - o2.getAge();
            }
            return flag ;
      });
//没有实现的简写方式
userList.stream().sorted(Comparator.comparing(User::getName).thenComparingInt(User::getAge));      

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 在Java中实现集合排序