利用字面量的方式创建一个集合
- //使用字面量的方式初始化一个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 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 进行排序
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |