Java 簡單實現對象資料去重處理__Java

來源:互聯網
上載者:User

對於資料庫去重相當簡單,只需要在查詢語句上添加DISTINCT關鍵字就可以搞定,但是針對Nosql資料庫而言DISTINCT未必支援,這時候我們需要自己手動實現。這裡有一個資料不重複的最簡單的原理:字串的hashcode比較,當然記錄的唯一指標不是ID,而是資料本身,我們去掉ID再來比較是否重複就可以了。

Java 類比代碼:

package com.boonya.mongo.client;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class LoveTest {public static void main(String[] args) {List<Person> list=new ArrayList<Person>();Person p=new Person("1", "boonya", 20);Person p2=new Person("2", "boonya", 20);Person p3=new Person("3", "boonya", 20);Person p4=new Person("4", "boonya", 20);list.add(p);list.add(p2);list.add(p3);list.add(p4);Map<String,Object> map=new HashMap<String, Object>();for (Person person : list) {if(!map.containsKey(""+person.toString().hashCode())){map.put(person.toString().hashCode()+"", person);}}for (Object  person : map.values()) {Person uniquePerson=(Person) person;System.out.println(uniquePerson.getId()+" "+uniquePerson);}}}class Person{private String id;private String name;private int age;public String getId() {return id;}public void setId(String 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;}public Person(String id, String name, int age) {super();this.id = id;this.name = name;this.age = age;}@Overridepublic String toString() {return "Person [" + (name != null ? "name=" + name + ", " : "")+ "age=" + age + "]";}}
測試結果 :

1 Person [name=boonya, age=20]

hash碰撞的情況本文不考慮。


Java8 去重

List<String> unique = list.stream().distinct().collect(Collectors.toList());


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.