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

java8根據(jù)某一屬性過濾去重的實例

 更新時間:2022年05月06日 11:13:42   作者:檸檬草。  
這篇文章主要介紹了java8根據(jù)某一屬性過濾去重的實例,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

java8根據(jù)某一屬性過濾去重

最近小編剛接觸到j(luò)ava8特性,在不知道有java8特性的時候,一個for循環(huán)套一個for循環(huán),自從接觸大java8,為自己省了很多事,節(jié)省了很多代碼量.

根據(jù)list某一屬性去重

//根據(jù)id去重
examRoomModelLists = examRoomModelLists.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(
? ? ? ? ? ? ? ? // 利用 TreeSet 的排序去重構(gòu)造函數(shù)來達(dá)到去重元素的目的
? ? ? ? ? ? ? ? // 根據(jù)firstName去重
? ? ? ? ? ? ? ? () -> new TreeSet<>(Comparator.comparing(ExamRoomModel::getId))), ArrayList::new));

過濾StudentExamState=0的數(shù)據(jù)

em.setNoLoginExamineeCount((examinee.stream().map(ExamineeEntity::getStudentExamState).filter(x ->?
x == 0).collect(Collectors.toList())).size());
? ? ? ? ? ? }

過濾ExamRoomStudentCount=0的數(shù)據(jù)

?List<ExamRoomModel> filterList = examRoomModelLists.stream().filter(ExamRoomModel ->?
?!Objects.equals(ExamRoomModel.getExamRoomStudentCount(), 0)).collect(Collectors.toList());

是不是很方便,換成以前過濾去重不知道要寫多少橫代碼,現(xiàn)在一行解決. 

Java8 stream根據(jù)對象字段去重

public class Java8StreamTest {
    public static class Book{
        private String id;
        private String name;
        public Book(String id, String name) {
            this.id = id;
            this.name = name;
        }
        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;
        }
        @Override
        public String toString() {
            return "Book{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                '}';
        }
    }
    @Test
    public void testUnique(){
        List<Book> books = Lists.newArrayList(new Book("1","1"),new Book("2","2"),new Book("3","3"),new Book("2","2"));
		//使用TreeSet去重
        List<Book> unique1 = books.stream().collect(
                collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getId()))),
                        ArrayList::new));
        System.out.println(unique1);
		//使用map去重
        List<Book> unique2 = books.stream()
                .filter(distinctByKey(o -> o.getId()))
                .collect(Collectors.toList());
        System.out.println(unique2);
    }
    public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
        Map<Object, Boolean> seen = new ConcurrentHashMap<>();
        System.out.println("這個函數(shù)將應(yīng)用到每一個item");
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }
}

stream對list中的對象進(jìn)行去重

首先我們有一個對象屬性如下

@Data
public class Person {
? ? private String id;
? ? private String name;
? ? private String sex;
}

我們根據(jù)屬性name來去重,去重代碼如下

List<Person> persons = new ArrayList();
//賦值初始化過程省略
List<Person> uniqueByName = persons.stream().collect(
? ? ? ? ? ? Collectors.collectingAndThen(
? ? ? ? ? ? ? ? ? ? Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new)
);

根據(jù)name,sex兩個屬性去重

List<Person> persons = new ArrayList();
//賦值初始化過程省略
List<Person> uniqueByNameAndSex = persons.stream().collect(
? ? ? ? ? ?Collectors. collectingAndThen(
? ? ? ? ? ? ? ? ? ? Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getName() + ";" + o.getSex()))), ArrayList::new)
);

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • ShardingJdbc讀寫分離的BUG踩坑解決

    ShardingJdbc讀寫分離的BUG踩坑解決

    這篇文章主要為大家介紹了ShardingJdbc讀寫分離的BUG踩坑解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • SpringBoot中過濾器Filter+JWT令牌實現(xiàn)登錄驗證

    SpringBoot中過濾器Filter+JWT令牌實現(xiàn)登錄驗證

    本文主要介紹了SpringBoot中過濾器Filter+JWT令牌實現(xiàn)登錄驗證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • springmvc分層領(lǐng)域模型概念詳解

    springmvc分層領(lǐng)域模型概念詳解

    本文核心為分層領(lǐng)域模型(VO , PO , BO, DAO ,POJO等)概念的個人理解,結(jié)合springmvc淺談分層領(lǐng)域模型的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧
    2021-08-08
  • MyBatis-Plus中如何使用ResultMap的方法示例

    MyBatis-Plus中如何使用ResultMap的方法示例

    本文主要介紹了MyBatis-Plus中如何使用ResultMap,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Spring Boot線程池使用的一些實用心得

    Spring Boot線程池使用的一些實用心得

    理論上線程越多程序可能更快,但在實際使用中我們需要考慮到線程本身的創(chuàng)建以及銷毀的資源消耗,以及保護(hù)操作系統(tǒng)本身的目的我們通常需要將線程限制在一定的范圍之類,這篇文章主要給大家介紹了關(guān)于Spring Boot線程池使用的一些實用心得,需要的朋友可以參考下
    2021-09-09
  • Java語言實現(xiàn)簡單FTP軟件 FTP軟件遠(yuǎn)程窗口實現(xiàn)(6)

    Java語言實現(xiàn)簡單FTP軟件 FTP軟件遠(yuǎn)程窗口實現(xiàn)(6)

    這篇文章主要為大家詳細(xì)介紹了Java語言實現(xiàn)簡單FTP軟件,F(xiàn)TP軟件遠(yuǎn)程窗口的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • java工具類SendEmailUtil實現(xiàn)發(fā)送郵件

    java工具類SendEmailUtil實現(xiàn)發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了java工具類SendEmailUtil實現(xiàn)發(fā)送郵件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • SpringAop中AspectJ框架的切入點表達(dá)式

    SpringAop中AspectJ框架的切入點表達(dá)式

    這篇文章主要介紹了SpringAop中AspectJ框架的切入點表達(dá)式,AspectJ是一個基于Java語言的AOP框架,Spring2.0以后新增了對AspectJ切點表達(dá)式支持,@AspectJ 是AspectJ1.5新增功能,通過JDK5注解技術(shù),允許直接在Bean類中定義切面,需要的朋友可以參考下
    2023-08-08
  • SpringCloud微服務(wù)熔斷器Hystrix使用詳解

    SpringCloud微服務(wù)熔斷器Hystrix使用詳解

    這篇文章主要介紹了Spring Cloud Hyxtrix的基本使用,它是Spring Cloud中集成的一個組件,在整個生態(tài)中主要為我們提供服務(wù)隔離,服務(wù)熔斷,服務(wù)降級功能,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • jackson json序列化實現(xiàn)首字母大寫,第二個字母需小寫

    jackson json序列化實現(xiàn)首字母大寫,第二個字母需小寫

    這篇文章主要介紹了jackson json序列化實現(xiàn)首字母大寫,第二個字母需小寫方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論

河南省| 新宁县| 三江| 林芝县| 武清区| 平昌县| 江达县| 磐石市| 扶沟县| 公主岭市| 昆明市| 高州市| 布拖县| 白山市| 江西省| 沙河市| 江都市| 中卫市| 封丘县| 福鼎市| 桐梓县| 遂溪县| 古田县| 紫金县| 清徐县| 浠水县| 兰溪市| 尚志市| 江北区| 郓城县| 大渡口区| 赣榆县| 海兴县| 淅川县| 彰化县| 博罗县| 玉屏| 江孜县| 象山县| 广德县| 沙坪坝区|