使用字面量的方式创建一个集合
java
//使用字面量的方式初始化一个List集合
List<User> userList = Arrays.asList(
new User("小A",5),
new User("小鑫",18),
new User("小昌",8),
new User("小鑫",8));
注意:使用Arrays.asList() api方法创建出来的集合他是一个固定长度的集合,不能进行集合的添加和删除,否则会抛出 UnsupportedOperationException
异常,如果你想要添加或者删除集合元素必须使用如下方式创建集合
java
List<User> studentList = new ArrayList<>(
Arrays.asList(new User("杨鑫"), new User("小咪"), new User("科雷"),new User("张宝"))
);
1、实现Comparable接口,实现集合排序
1.1、实体类实现Comparable接口
java
package com.maochang.tenancytest.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Data
public class User implements 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 进行排序
java
Collections.sort(userList);
1.3、测试方法
java
@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 比较器实现集合对象排序
java
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 ;
}
);
简写优化写法
java
Collections.sort(userList,
Comparator.comparing(User::getName).thenComparingInt(User::getAge)
);
3、使用Stream进行集合对象排序
java
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));