java表数据去重_java8实现列表去重,java8的stream 和lambda的使用实例
不管我們做安卓開發還是javaweb開發,有時候我們會對列表進行去重操作,所謂的列表數據重復,通常體現在列表集合數據中的id屬性相同。當然我們通過普通的方式也可以達到去重的效果。但是借助java8新特性可以很方便的實現列表去重,下面就寫個小demo簡單的演示一下。
主要實現代碼
List persons = new ArrayList();
List ids = new ArrayList<>();//用來臨時存儲person的id
persons.add(new Person(1, "name1", 10));
persons.add(new Person(2, "name2", 21));
persons.add(new Person(5, "name5", 55));
persons.add(new Person(3, "name3", 34));
persons.add(new Person(1, "name1", 10));
List personList = persons.stream().filter(// 過濾去重
v -> {
boolean flag = !ids.contains(v.getId());
ids.add(v.getId());
return flag;
}
).collect(Collectors.toList());
System.out.println(personList);
運行后的打印如下.可以看出id為1時的重復數據已經被過濾掉了
[
Person{id=1, name='name1', age=10},
Person{id=2, name='name2', age=21},
Person{id=5, name='name5', age=55},
Person{id=3, name='name3', age=34}
]
person類的代碼如下
package com.qcl.demo;
/**
* Created by qcl on 2018/3/26.
*/
public class Person {
private int id;
private String name;
private int age;
public Person() {
}
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
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 int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
這只是java8在我們開發時比較常用的一個操作。
如下面這個例子使用也比較普遍
獲取person集合中的所有大于18周歲,并排序
List persons = new ArrayList();
persons.add(new Person(1, "name1", 10));
persons.add(new Person(2, "name2", 21));
persons.add(new Person(5, "name5", 55));
persons.add(new Person(3, "name3", 34));
persons.add(new Person(4, "name4", 6));
persons.stream()
.filter(p -> p.getAge() >= 18)//獲取所有18歲以上的用戶
.sorted(Comparator.comparing(Person::getAge))//依年紀升序排序
.sorted(Comparator.comparing(Person::getAge).reversed())//依年紀降序排序
.collect(Collectors.toList())
.forEach(System.out::println);
boolean isAllAdult = persons.stream().
allMatch(p -> p.getAge() > 18);
System.out.println("是否所有的用戶都大于18歲" + isAllAdult);
總結:java8的使用,對于我們操作集合,數組提供了很大的便利。建議大家有機會多去了解下java8的新特性。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java表数据去重_java8实现列表去重,java8的stream 和lambda的使用实例的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 学习具体计划书
- 下一篇: CentOS下安装MySQL报安装文件c
