最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

根據(jù)list中對(duì)象的屬性去重和排序小結(jié)(必看篇)

 更新時(shí)間:2017年05月20日 15:33:55   投稿:jingxian  
下面小編就為大家?guī)硪黄鶕?jù)list中對(duì)象的屬性去重和排序小結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

如下所示:

//去重
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 {
/**
 *   有一個(gè)List<User> list 放了五個(gè)對(duì)象:user1、user2、user3、user4、user5
  User有三個(gè)屬性Id、name、age
  其中user2的記錄大概是這樣:“100”,"abc",20;
  user3的記錄大概是這樣:“100”,“def”,20;
  請(qǐng)問怎么才能只保留user2和user3中的一個(gè)對(duì)象,并將其中的name合并到新對(duì)象中,
  新對(duì)象如“100”,“abcdef”,20
  這只是舉個(gè)例子,實(shí)際中有可能user4和user5與此類似,如果有id相同的兩個(gè)對(duì)象,則對(duì)其進(jìn)行
  合并,只保留一個(gè)對(duì)象,求一個(gè)通用的方法,能篩選出對(duì)象集合中某些相同ID的兩個(gè)對(duì)象,將其合并
  仍保留在原list中
 * @param args
 */
  //list有序可重復(fù)、set無序不可重復(fù)、mapkey不允許重復(fù),key相同的后面的value會(huì)把前面的覆蓋掉
  //List存放的數(shù)據(jù),默認(rèn)是按照放入時(shí)的順序存放的,比如依次放入A、B、C,則取得時(shí)候,則也是A、B、C的順序
  public static void main(String[] args) {
    List<User> 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));
    /* for (User user : list) {
      System.out.println(user.toString());
    } 
    System.out.println();*/
    list = mySort(list);
    for (User user : list) {
      System.out.println(user.toString());
    }
       
    }
    public static List<User> mySort(List<User> list){
      HashMap<Integer,User> tempMap = new HashMap<>();
      for (User user : list) {
        int key = user.getId();
// containsKey(Object key) 該方法判斷Map集合對(duì)象中是否包含指定的鍵名。如果Map集合中包含指定的鍵名,則返回true,否則返回false
// containsValue(Object value)  value:要查詢的Map集合的指定鍵值對(duì)象.如果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重復(fù)的,所以如果有key重復(fù)的話,那么前面的value會(huì)被后面的value覆蓋          
          tempMap.put(key, tempUser);
        }else{
          tempMap.put(key, user);
        }
      }
      List<User> 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<Student> list = new ArrayList<Student>(); 
     
      //創(chuàng)建3個(gè)學(xué)生對(duì)象,年齡分別是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<Student>(){ 
   
        /* 
         * int compare(Student o1, Student o2) 返回一個(gè)基本類型的整型, 
         * 返回負(fù)數(shù)表示:o1 小于o2, 
         * 返回0 表示:o1和o2相等, 
         * 返回正數(shù)表示:o1大于o2。 
         */ 
        public int compare(Student o1, Student o2) { 
         
          //按照學(xué)生的年齡進(jìn)行升序排列 ;<是降序
//          /*if(o1.getAge() > o2.getAge()){ 
//            return 1; 
//          } 
//          if(o1.getAge() == o2.getAge()){ 
//            return 0; 
//          } 
//          return -1; */
//          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); 
    } 

  }

以上這篇根據(jù)list中對(duì)象的屬性去重和排序小結(jié)(必看篇)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java?抽象類和接口的實(shí)現(xiàn)

    Java?抽象類和接口的實(shí)現(xiàn)

    本文主要介紹了Java?抽象類和接口,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2007-03-03
  • 詳解Mybatis核心類SqlSessionFactory的構(gòu)建

    詳解Mybatis核心類SqlSessionFactory的構(gòu)建

    這篇文章主要為大家詳細(xì)介紹了Mybatis核心類SqlSessionFactory的構(gòu)建過程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • java中如何使用泛型方法比較大小

    java中如何使用泛型方法比較大小

    這篇文章主要介紹了java中如何使用泛型方法比較大小,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 詳解SpringBoot依賴注入和使用配置文件

    詳解SpringBoot依賴注入和使用配置文件

    這篇文章主要介紹了SpringBoot依賴注入和使用配置文件的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • 一篇文章帶你入門java泛型

    一篇文章帶你入門java泛型

    這篇文章主要介紹了java泛型基礎(chǔ)知識(shí)及通用方法,從以下幾個(gè)方面介紹一下java的泛型: 基礎(chǔ), 泛型關(guān)鍵字, 泛型方法, 泛型類和接口,感興趣的可以了解一下
    2021-08-08
  • SpringCloud Zuul在何種情況下使用Hystrix及問題小結(jié)

    SpringCloud Zuul在何種情況下使用Hystrix及問題小結(jié)

    這篇文章主要介紹了SpringCloud Zuul在何種情況下使用Hystrix 及問題小結(jié),感興趣的朋友跟隨小編一起看看吧
    2018-11-11
  • Java 按照字節(jié)來截取字符串的代碼(不會(huì)出現(xiàn)半個(gè)漢字)

    Java 按照字節(jié)來截取字符串的代碼(不會(huì)出現(xiàn)半個(gè)漢字)

    Java 按照字節(jié)來截取字符串的工具,不會(huì)出現(xiàn)半個(gè)漢字。一個(gè)中文兩個(gè)字節(jié),一個(gè)英文字符只占 1 個(gè)字節(jié)** 1. 通常我們用于前端顯示的時(shí)候,防止標(biāo)題過長
    2014-01-01
  • JavaWeb倉庫管理系統(tǒng)詳解

    JavaWeb倉庫管理系統(tǒng)詳解

    這篇文章主要為大家詳細(xì)介紹了JavaWeb倉庫管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • java正則表達(dá)式處理花括號(hào)內(nèi)容替換賦值問題

    java正則表達(dá)式處理花括號(hào)內(nèi)容替換賦值問題

    這篇文章主要介紹了java正則表達(dá)式處理花括號(hào)內(nèi)容替換賦值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java overload和override的區(qū)別分析

    Java overload和override的區(qū)別分析

    方法的重寫(Overriding)和重載(Overloading)是Java多態(tài)性的不同表現(xiàn),想要了解更多請(qǐng)參考本文
    2012-11-11

最新評(píng)論

南康市| 施秉县| 外汇| 铁岭市| 保定市| 安塞县| 鹤峰县| 准格尔旗| 五寨县| 祥云县| 来安县| 区。| 临高县| 北辰区| 香河县| 利川市| 济南市| 云南省| 柳林县| 神木县| 平陆县| 同心县| 余庆县| 香格里拉县| 沽源县| 平度市| 阿克| 云和县| 昭通市| 伊宁县| 屯门区| 宁河县| 南和县| 陆丰市| 会同县| 湘阴县| 嘉禾县| 分宜县| 浙江省| 建平县| 成武县|