java去重List的contains()方法
實踐過程中需要用到java中list去重,故打算採用contains()方法,
1.若為List<某類>則需在該類中重寫equals()方法,及hashCode()方法
2.具體重寫程式碼:
引用自:http://fhuan123.iteye.com/blog/1452275package com.fit; import java.util.HashMap; /** * 身份證類 * * @author ZYD * */ public class Code { /** * 身份證號碼,一旦確定就不能更改 */ private final int id; public int getId() { return id; } /** * 通過構造方法確定身份證號碼 * * @param id */ public Code(int id) { this.id = id; } /** * 重寫equals()方法 */ public boolean equals(Object o) { // 如果地址一樣,則兩個物件相同 if (this == o) { return true; } // 如果兩個物件是同一型別,則比較其屬性值是否都相同。如果都相同,則說明兩個物件也相同;否則,說明這兩個物件不相同。 if (o instanceof Code) { Code co = (Code) o; boolean b = (co.id == this.id); return b; } return false; } /** * 重寫hashcode()方法,以身份證號碼作為hash碼。 * * @return */ public int hashCode() { return id; } /** * 重寫toString()方法 */ public String toString() { return "【身份證】:" + id; } /** * 測試 * @param args */ public static void main(String[] args) { HashMap<Code, Person> map = new HashMap<Code, Person>(); Person p1 = new Person(new Code(10001),"張三"); Person p2 = new Person(new Code(10002),"李四"); map.put(p1.getCode(), p1); map.put(p2.getCode(), p2); System.out.println("HashMap 中存放的人員資訊:\n"+map); //張三改名為張山,身份證號不變。 Person p3 = new Person(new Code(10001),"張山"); map.put(p3.getCode(), p3); System.out.println("張三改名為張山後 HashMap 中存放的人員資訊:\n"+map); //查詢身份證為10001 的人員資訊 System.out.println("查詢身份證為:10001 的人員資訊:"+map.get(new Code(10001))); } } /** * 人類 * @author Administrator * */ class Person { /** * 每一個成人都有一個身份證 */ private Code code; /** * 姓名 */ private String name; public Code getCode() { return code; } public void setCode(Code code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Person() { } public Person(Code code, String name) { this.code = code; this.name = name; } /** * 重寫equals()方法 當兩個人得身份證號相同以及姓名相同時,表示這兩個人是同一個人。 */ public boolean equals(Object o) { if (o == this) { return true; } if (o instanceof Person) { Person p = (Person) o; boolean b = this.code.equals(p.code) && this.name.equals(p.name); return b; } return false; } /** * 重寫toString()方法 */ public String toString() { return "【姓名】:" + name + " "; } }
3.使用contains()方法:
4.時間Date類無法使用“==”故替換為compareTo()方法:while(rs.next()){ Date date0 = rs.getDate("date"); Time_Number time = new Time_Number(); time.setTime(date0); time.setNumber(getOneTimeNumber(date0)); if(!list0.contains(time)){ list0.add(time); // System.out.println("uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + rs.getDate("date")); // System.out.println("uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu" + time.getNumber()); }else{ continue; } };
if(t.time.compareTo(this.time) ==0)//date中compareTo的用法。也是比較時間大小的,相等返回0,大於返回1,小於返回-1.
return true;
相關推薦
Java陣列Arrays.fill()方法
Java陣列Arrays.fill()方法 Java API 中的 Fill public static void fill(Object[] a, int fromIndex, int toIndex, Object val)將指定的 Object 引用分
java的Collections.sort()方法使用
conllections.sort()可以排序List、List、List<包裝類>,還可以是List<自定義的物件> (一)通過Collections.sort()方法,對i
java去重List的contains()方法
實踐過程中需要用到java中list去重,故打算採用contains()方法, 1.若為List<某類>則需在該類中重寫equals()方法,及hashCode()方法 2.具體重寫程式碼: package com.fit; import java.
學以致用——Java原始碼——對使用者輸入進行去重處理(Duplicate Elimination)
發現之前的程式碼與需求有一定出入,所以改寫了一下: 1. 如果使用者輸入不重複的值,顯示該值,否則提示使用者重複輸入,不顯示該值 2. 使用了增強for語句(enhanced for statement)遍歷陣列 3. 僅列印不重複值 上一個版本的程式碼參考: https:/
每日一python(3):python 中對list去重的兩種方法
在python相關職位的面試過程中,會對列表list的去重進行考察。(注意有時會要求保證去重的順序性) 方法1:直觀方法 思路:先建立一個新的空列表,通過遍歷原來的列表,再利用邏輯關係not in 來去重 程式碼: #coding:utf-8 ll = [
史上最全JavaScript陣列去重的十種方法(推薦)
一、前言: 我們在實際工作中,或者在面試找工作時,都會用到或者被問到一個問題,那就是“陣列如何去重”。是的,這個問題有很多種解決方案,看看下面的十種方式吧! 二、陣列去重方式大彙總: Methods 1: 思路:定義一個新陣列,並存放原陣列的第一個元素,然後將元素組一一和新陣列的元素
js 數組去重的三種方法(unique)
arr 個數 func () 方法 表數 undefined 唯一性 當前 方法一: Array.prototype.unique=function(){ var arr=[];//新建一個臨時數組 for(var i=0;i<this.length;i
ArrayList中remove()方法刪除長度大於5的元素之後下標重定位的問題
com 有一個 fad 就刪除 成了 位置 p s cnblogs 中心 1、問題闡述 需求: 有一個ArrayList數組,要求刪除長度大於5的字符串,如:arr = {"ab1","123ad","bca","dadfadf","dddaaa","你好啊","我來
Java集合框架上機練習題:編寫一個Book類,該類至少有name和price兩個屬性。該類要實現Comparable接口,在接口的compareTo()方法.....
ext .cn 數據庫 識別 方法 屬性 set package compareto 編寫一個Book類,該類至少有name和price兩個屬性。該類要實現Comparable接口,在接口的compareTo()方法中規定兩個Book類實例的大小關系為二者的price屬性的
elastic search6.2.2 實現用戶搜索記錄查詢(去重、排序)
replicas pos 結果 etime rep col cas rms idt elastic search6.2.2 實現搜索記錄查詢 ,類似新浪微博這種,同樣的搜索記錄後面時間點的會覆蓋前面的(主要思路:關鍵詞去重,然後按時間排序) 先創建索引 //我的搜索
js算法初窺03(簡單搜索及去重算法)
二分搜索 href map 能力 target 新增 一起學 第一次 == 前面我們了解了一些常用的排序算法,那麽這篇文章我們來看看搜索算法的一些簡單實現,我們先來介紹一個我們在實際工作中一定用到過的搜索算法——順序搜索。 1、順序搜索 其實順序搜索十分簡單,我們還
Java 007 面向物件(構造方法、static關鍵字、JDK幫助文件、Math類)
知識點梳理 心得體會 小知識點 1.不同型別的靜態變數 1>靜態變數是基本資料型別時,類的外部不用建立該類例項可以能直接使用 2>靜態變數是引用時,即靜態變數是一個物件的引用,必須先初始化這個物件,才能將引用指向靜態變數 2.靜態成員與例項成員 1&
JAVA中Object類的toString()方法
toString public String toString() 返回該物件的字串表示。通常,toString 方法會返回一個“以文字方式表示”此物件的字串。結果應是一個簡明但易於讀懂的資訊表示式。建議所有子類都重寫此方法。 Object 類的 toS
Java 的equals()方法 和 == 的區別和聯絡
淺談Java中的equals和== 在初學Java時,可能會經常碰到下面的程式碼: String str1 = new String("hello"); String str2 = new String("hello"); System.out.print
W3Cschool高階指令碼演算法(5.排列組合去重演算法挑戰)
排列組合去重演算法挑戰 問題: 把一個字串中的字元重新排列生成新的字串,返回新生成的字串裡沒有連續重複字元的字串個數.連續重複只以單個字元為準 例如, aab 應該返回 2 因為它總共有6中排列 (aab, aab, aba, aba, baa, baa), 但是隻有兩
Java面試題(每日兩題9.28)—如何實現在main()方法執行前輸出“Hello World”
眾所周知,在 Java語言中,main()方法是程式的入口方法,在程式執行時,最先載入的就是main()方法,但這是否意味著main()方法就是程式執行時第一個被執行的模組呢? 答案是否定的。在Jawa語言中,由於靜態塊在類被載入時就會被呼叫,因此可以在main()方
java第18天----生產者消費者,Lock鎖,守護執行緒,join()方法
昨天知識總結: 多執行緒 執行緒的兩種建立方式 建立Thread的子類 執行緒與任務分離 執行緒安全----重點 單例中執行緒安全的應用 執行緒的停止 執行緒 執行緒的通訊 執行緒的通訊: 分析: 需要兩個執行緒—輸入執行緒,和輸
Java Object類中克隆clone()方法的使用
測試程式碼 package test04; // // protected Object clone()建立並返回物件一個副本。因為是protected型別的方法,只能在子類訪問 // 如果使用clone(),需要重寫此方法。 // 注意和Student
js中陣列常用邏輯演算法(從大到小,從小到大排序,去重等問題)
從小到大: // 從小到大順序排序 minSort (arr) { var min for (var i = 0; i < arr.length; i++) { for (var j = i; j < arr.le
Java 集合List及Map中forEach()方法
我們先看一個forEach()方法遍歷List集合的例子: //使用com.google.guava包建立集合 List<String> list =Lists.newArrayList("a","b","c","d");