栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

根据list中对象的属性去重和排序小结(必看篇)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

根据list中对象的属性去重和排序小结(必看篇)

如下所示:

//去重
public class User {
    private int id;
    private String name;
    private int age;
    public User(){}
    public User(int id, String name, int age) {
      super();
      this.id = id;
      this.name = name;
      this.age = age;
    }
    public int getId() {
      return id;
    }
    public void setId(int id) {
      this.id = id;
    }
    public String getName() {
      return name;
    }
    public void setName(String name) {
      this.name = name;
    }
    public int getAge() {
      return age;
    }
    public void setAge(int age) {
      this.age = age;
    }
    @Override
    public String toString() {
      return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
     
  }

public class ListTest {

  //list有序可重复、set无序不可重复、mapkey不允许重复,key相同的后面的value会把前面的覆盖掉
  //List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A、B、C,则取得时候,则也是A、B、C的顺序
  public static void main(String[] args) {
    List list = new ArrayList<>();
    list.add(new User(1,"a",20));
    list.add(new User(1,"a",20));
    list.add(new User(2,"a",20));
    list.add(new User(3,"b",20));
    list.add(new User(1,"c",20));
    list.add(new User(4,"d",20));
    list.add(new User(2,"e",20));
    list.add(new User(1,"a",20));
    
    list = mySort(list);
    for (User user : list) {
      System.out.println(user.toString());
    }

    }
    public static List mySort(List list){
      HashMap tempMap = new HashMap<>();
      for (User user : list) {
 int key = user.getId();
// containsKey(Object key) 该方法判断Map集合对象中是否包含指定的键名。如果Map集合中包含指定的键名,则返回true,否则返回false
// containsValue(Object value)  value:要查询的Map集合的指定键值对象.如果Map集合中包含指定的键值,则返回true,否则返回false
 if(tempMap.containsKey(key)){
   User tempUser = new User(key,
  tempMap.get(key).getName() + user.getName(),
  tempMap.get(key).getAge());//user.getAge();
//HashMap是不允许key重复的,所以如果有key重复的话,那么前面的value会被后面的value覆盖   
   tempMap.put(key, tempUser);
 }else{
   tempMap.put(key, user);
 }
      }
      List tempList = new ArrayList<>();
      for(int key : tempMap.keySet()){
 tempList.add(tempMap.get(key));
      }
      return tempList;
    }

  }

//排序=============================================
public class Student {
  private int age; 
  private String name; 
  public int getAge() { 
    return age; 
  } 
 
  public void setAge(int age) { 
    this.age = age; 
  } 

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  @Override
  public String toString() {
    return "Student [age=" + age + ", name=" + name + "]";
  } 
  
}
public class ListSort {

  public static void main(String[] args) {
     List list = new ArrayList(); 
     
      //创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中 
      Student s1 = new Student(); 
      s1.setAge(20); 
      s1.setName("葛大");
      Student s2 = new Student(); 
      s2.setAge(19); 
      s2.setName("张杰");
      Student s3 = new Student(); 
      s3.setAge(21); 
      s3.setName("宝爷");
      list.add(s1); 
      list.add(s2); 
      list.add(s3); 

      System.out.println("排序前:"+list); 
      
      Collections.sort(list, new Comparator(){ 
   
  
 public int compare(Student o1, Student o2) { 
  
   //按照学生的年龄进行升序排列 ;<是降序
//   
//   return o1.getAge()-o2.getAge();//升序
//   return o2.getAge()-o1.getAge();//降序 
   return o1.getName().compareTo(o2.getName()) ;// 按照姓名升序
//   return o2.getName().compareTo(o1.getName()) ;// 按照姓名降序
 } 
      });  
      System.out.println("排序后:"+list); 
    } 

  }

以上这篇根据list中对象的属性去重和排序小结(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/146118.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号