精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

全面解析 Java Comparator:一步步掌握排序技巧!

開發 前端
我們展示了如何使用 Java Comparator 實現定制化排序,并在 Spring Boot 項目中將排序功能集成到前后端,最終呈現了一個可交互的人員列表。希望本文能夠幫助你深入理解 Comparator 的用法!

排序是編程中最基礎且常見的需求之一。在 Java 中,Comparator 接口是實現定制化排序的強大工具。本文將通過代碼示例深入講解 Comparator 的用法,并結合一個實際的 Spring Boot 項目展示如何在前后端實現排序功能。

Comparator 接口詳細介紹

Comparator 是 Java 中用于定義對象排序規則的接口。它位于 java.util 包中,常用于對集合或數組中的對象進行排序。與 Comparable 接口相比,Comparator 更靈活,它允許我們為不同的排序需求定義多個比較器。

  • 核心方法

返回負數:o1 小于 o2。

返回零:o1 等于 o2。

返回正數:o1 大于 o2。

  • int compare(T o1, T o2)定義兩個對象的比較邏輯。
  • boolean equals(Object obj)(默認實現):用于比較當前 Comparator 與另一個對象是否相等。
  • 常見用法

.匿名內部類直接實現接口并定義排序邏輯。

a.Lambda 表達式在 Java 8 之后,更簡潔地實現比較邏輯。

b.方法引用使用已有的方法簡化代碼。

c.Comparator 的引入極大地提高了排序的靈活性,適用于需要多條件或動態排序的場景。

項目配置

pom.xml 配置

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <!-- Spring Boot Thymeleaf -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <!-- Spring Boot DevTools -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- Spring Boot Configuration Processor -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

application.yaml 配置

custom:
  sorting:
    criteria:
      - name
      - age
      - city

讀取配置類

package com.icoderoad.config;


import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;


import java.util.List;


@Data
@Configuration
@ConfigurationProperties(prefix = "custom.sorting")
public class SortingConfig {
    private List<String> criteria;
}

核心代碼

實體類

package com.icoderoad.entity;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person {
    private String name;
    private int age;
    private String city;
}

Comparator 實現

package com.icoderoad.util;


import com.icoderoad.entity.Person;


import java.util.Comparator;


public class PersonComparator {
    public static Comparator<Person> byName() {
        return Comparator.comparing(Person::getName);
    }


    public static Comparator<Person> byAge() {
        return Comparator.comparingInt(Person::getAge);
    }


    public static Comparator<Person> byCity() {
        return Comparator.comparing(Person::getCity);
    }
}

服務層

package com.icoderoad.service;


import com.icoderoad.config.SortingConfig;
import com.icoderoad.entity.Person;
import com.icoderoad.util.PersonComparator;
import org.springframework.stereotype.Service;


import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;


@Service
public class PersonService {


    private final SortingConfig sortingConfig;


    public PersonService(SortingConfig sortingConfig) {
        this.sortingConfig = sortingConfig;
    }


    public List<Person> sortPersons(List<Person> persons, String criteria) {
        Comparator<Person> comparator;
        switch (criteria) {
            case "age":
                comparator = PersonComparator.byAge();
                break;
            case "city":
                comparator = PersonComparator.byCity();
                break;
            case "name":
            default:
                comparator = PersonComparator.byName();
                break;
        }
        return persons.stream().sorted(comparator).collect(Collectors.toList());
    }
}

控制器層

package com.icoderoad.controller;


import com.icoderoad.entity.Person;
import com.icoderoad.service.PersonService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;


import java.util.Arrays;
import java.util.List;


@Controller
public class PersonController {


    private final PersonService personService;


    public PersonController(PersonService personService) {
        this.personService = personService;
    }


    @GetMapping("/persons")
    public String getPersons(@RequestParam(defaultValue = "name") String criteria, Model model) {
        List<Person> persons = Arrays.asList(
            new Person("Alice", 30, "New York"),
            new Person("Bob", 25, "San Francisco"),
            new Person("Charlie", 35, "Chicago")
        );
        model.addAttribute("persons", personService.sortPersons(persons, criteria));
        model.addAttribute("criteria", criteria);
        return "persons";
    }
}

前端實現

persons.html 模板

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Person List</title>
    <link rel="stylesheet" >
</head>
<body>
<div class="container mt-5">
    <h1>人員列表</h1>
    <form method="get" action="/persons">
        <select name="criteria" class="form-select" onchange="this.form.submit()">
            <option value="name" th:selected="${criteria == 'name'}">按姓名排序</option>
            <option value="age" th:selected="${criteria == 'age'}">按年齡排序</option>
            <option value="city" th:selected="${criteria == 'city'}">按城市排序</option>
        </select>
    </form>
    <table class="table table-striped mt-3">
        <thead>
        <tr>
            <th>姓名</th>
            <th>年齡</th>
            <th>城市</th>
        </tr>
        </thead>
        <tbody>
        <tr th:each="person : ${persons}">
            <td th:text="${person.name}"></td>
            <td th:text="${person.age}"></td>
            <td th:text="${person.city}"></td>
        </tr>
        </tbody>
    </table>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

通過以上代碼,我們展示了如何使用 Java Comparator 實現定制化排序,并在 Spring Boot 項目中將排序功能集成到前后端,最終呈現了一個可交互的人員列表。希望本文能夠幫助你深入理解 Comparator 的用法!


責任編輯:武曉燕 來源: 路條編程
相關推薦

2017-01-19 21:08:33

iOS路由構建

2018-12-24 10:04:06

Docker存儲驅動

2019-07-09 15:23:22

Docker存儲驅動

2019-03-05 14:09:27

Docker存儲容器

2017-12-25 11:50:57

LinuxArch Linux

2016-11-02 18:54:01

javascript

2010-03-04 16:28:17

Android核心代碼

2010-04-07 13:05:57

2020-12-24 11:19:55

JavaMapHashMap

2024-09-30 09:56:59

2024-08-30 08:30:29

CPU操作系統寄存器

2011-05-10 10:28:55

2009-08-14 11:35:01

Scala Actor

2024-08-06 09:29:54

程序機器指令字符串

2018-06-11 15:30:12

2009-12-17 16:36:23

無線路由設置密碼

2018-04-23 14:23:12

2018-07-13 15:36:52

2017-01-06 15:13:25

LinuxVim源代碼

2025-09-30 09:40:33

點贊
收藏

51CTO技術棧公眾號

亚洲国产99| 天天影视久久综合| 在线日韩中文| 亚洲人成电影网站色| 亚洲人视频在线| 日本一级理论片在线大全| 99riav久久精品riav| 国产精品美女免费看| 国产一级性生活| 欧美日韩性在线观看| 亚洲成人亚洲激情| 五月天激情播播| 韩国成人漫画| 亚洲一区二区三区四区在线| 性欧美videosex高清少妇| 黄色一级大片在线免费看国产一 | 欧美日韩国产高清电影| 精品免费一区二区三区| 狠狠热免费视频| 搞黄网站在线看| 国产精品美女久久久久久2018| 国产伦理一区二区三区| 一区二区日韩在线观看| 久久精品123| 久久久欧美一区二区| 蜜桃av.com| 日本a口亚洲| 日韩精品在线免费播放| xxxxwww一片| 91精品亚洲一区在线观看| 色综合视频在线观看| 男人的天堂狠狠干| 直接在线观看的三级网址| 亚洲国产精品黑人久久久| 久久精品国产精品国产精品污 | 99产精品成人啪免费网站| 久久精品伊人| 热久久免费国产视频| xxxx 国产| 欧美国内亚洲| 欧美成人精品xxx| 成人在线观看免费完整| 免费精品国产的网站免费观看| 亚洲国产成人精品女人久久久| 国模大尺度视频| 日本精品一区二区三区在线观看视频| 欧美日韩高清在线| 999久久久精品视频| 亚洲成人精品综合在线| 欧美夫妻性生活| 三级av免费看| 久久久久久久久成人| 欧美一区二区久久| wwwxxxx在线观看| 亚洲精品18| 亚洲精品一区二区三区影院 | 国产精品久久久久久久成人午夜| 奇米777欧美一区二区| 国产精品日本精品| 在线观看国产一区二区三区| 麻豆成人av在线| 91亚洲精品久久久久久久久久久久| 6—12呦国产精品| 精品一区二区日韩| 91原创国产| 亚洲人妻一区二区| 国产欧美一区二区在线观看| 日韩中文字幕一区二区| 午夜视频在线观看网站| 亚洲精品国产高清久久伦理二区| 黄色一级大片免费| 僵尸再翻生在线观看免费国语| 欧美午夜xxx| 一本岛在线视频| 免费一级欧美片在线观看网站| 精品va天堂亚洲国产| 国产 中文 字幕 日韩 在线| 狠狠做六月爱婷婷综合aⅴ| 丝袜情趣国产精品| 欧美精品久久久久性色| 久久国产精品99国产| 国产精品日日摸夜夜添夜夜av| 国产日韩精品suv| 亚洲成av人乱码色午夜| 欧美大尺度做爰床戏| 国产一区二区三区黄网站| 欧美成人乱码一区二区三区| www男人天堂| 国产麻豆一区二区三区精品视频| 最近2019好看的中文字幕免费| 国产美女久久久久久| 一本久道久久综合婷婷鲸鱼| 国产精品电影网| 精品人妻伦一区二区三区久久| 99re热视频这里只精品| 亚洲日本理论电影| segui88久久综合9999| 在线观看一区二区视频| 亚洲免费观看在线| 成人vr资源| 久久久久久网站| 中文字幕+乱码+中文| 国产精品一区在线| 欧洲国产精品| 操喷在线视频| 69av一区二区三区| 国产一二三四五区| 99亚洲精品| 91深夜福利视频| 国产福利在线观看| 精品久久久一区二区| av在线免费看片| 伊人久久大香线蕉综合网站| 九九热精品在线| 亚洲午夜精品久久久| 91免费观看在线| youjizz.com在线观看| 欧美aaaaaa| 一区二区三区视频观看| 日韩xxxxxxxxx| 国产精品影音先锋| 亚洲一区三区视频在线观看| 成人做爰视频www网站小优视频| 精品国产伦一区二区三区观看体验| 亚洲国产精品一区二区久久hs| 久久国产日韩| 欧美大香线蕉线伊人久久| 欧美hdxxxxx| 日韩午夜激情av| 污软件在线观看| 奇米四色…亚洲| 日本10禁啪啪无遮挡免费一区二区| 成人在线黄色电影| 亚洲精品一区二区在线观看| 国产乱码久久久久久| 国产伦精品一区二区三区免费 | 国产日韩欧美一区二区三区| 孩xxxx性bbbb欧美| 欧美少妇bbw| 亚洲国产视频直播| 香蕉视频污视频| 91久久亚洲| 精品一区二区视频| 色一区二区三区| 亚洲精品视频免费在线观看| 亚洲GV成人无码久久精品| 91在线观看下载| aa在线免费观看| 国产欧美日韩精品高清二区综合区| 日本精品久久电影| 久热av在线| 在线观看91精品国产入口| 国产精品密蕾丝袜| 日本sm残虐另类| 一区二区三区在线观看www| 亚洲伦理久久| 欧美日韩成人精品| 日本免费不卡视频| 欧美性xxxx极品hd欧美风情| 自拍偷拍中文字幕| 免费xxxx性欧美18vr| dy888午夜| 国产毛片久久久| 欧美在线观看视频| 福利在线视频导航| 3atv在线一区二区三区| 欧美日韩一级在线观看| 99视频国产精品| 欧美综合在线观看视频| 99久久九九| 成人av电影免费| 亚洲黄色中文字幕| 中文字幕日韩专区| 国产黄色av片| 欧美视频在线免费看| 日韩毛片无码永久免费看| 另类小说视频一区二区| av日韩在线看| 亚洲精品小区久久久久久| 国产精品丝袜一区二区三区| 亚洲夜夜综合| 亚洲欧美视频在线| 国产免费的av| 欧美性极品xxxx做受| 国产探花视频在线| 成人av综合一区| 一级特黄性色生活片| 综合久久综合| 欧美二区在线看| 精品一区二区三区四区五区 | 999精品视频在线观看| 久久久噜噜噜久久| av在线天堂播放| 精品国精品国产| 亚洲中文无码av在线| 亚洲一区二区免费视频| 国产伦理片在线观看| 国产成人啪免费观看软件| 国产自偷自偷免费一区| 欧美午夜久久| 在线观看日韩羞羞视频| 亚洲桃色综合影院| 超碰97在线资源| 欧美电影在线观看网站| 97精品免费视频| a黄色片在线观看| 亚洲午夜国产成人av电影男同| 精品人妻无码一区二区色欲产成人 | 视频一区日韩精品| 国产精品视频免费观看www| 免费电影视频在线看| 久久五月情影视| se在线电影| 亚洲欧美成人精品| 日韩一级片免费观看| 91精品国产综合久久香蕉麻豆| 日韩电影在线观看一区二区| 午夜视频在线观看一区| 欧美成人国产精品高潮| 日韩美女啊v在线免费观看| 熟女少妇内射日韩亚洲| 久久色在线观看| 中文字幕人妻一区二区三区| 国产成人免费xxxxxxxx| 肉色超薄丝袜脚交| 久久99精品网久久| 日本在线观看免费视频| 日韩精品亚洲专区| 日韩中文字幕二区| 久久久人人人| 日本在线观看a| 国产精品毛片| 免费在线观看亚洲视频| 亚洲久久一区| 97国产精东麻豆人妻电影| 在线亚洲精品| 自慰无码一区二区三区| 99在线精品免费视频九九视 | 神马影院一区二区| 欧美日韩高清| 亚洲砖区区免费| 手机亚洲手机国产手机日韩| 亚洲欧洲日韩综合二区| 欧美hentaied在线观看| 亚洲人成人77777线观看| 日韩欧美一区二区三区在线视频| 亚洲午夜激情| 国产在线综合网| 久久久精品国产免大香伊| 中文字幕 亚洲一区| 26uuu久久天堂性欧美| 可以直接看的无码av| 久久久综合九色合综国产精品| a级大片在线观看| 亚洲国产成人私人影院tom| 操她视频在线观看| 国产精品乱人伦| 9999热视频| 亚洲国产婷婷综合在线精品| 精品成人av一区二区在线播放| 欧美日韩中文字幕综合视频 | www.色在线| 欧美亚洲成人精品| 日韩高清不卡| 亚洲在线免费观看| 66精品视频在线观看| 久久精品人人做人人爽电影| 国产一区二区三区四区五区| 一区二区免费电影| 欧美日韩亚洲一区| www.com毛片| 久久综合综合久久综合| 韩国三级hd中文字幕有哪些| 99久久99久久精品免费观看| 超碰人人干人人| 亚洲毛片av在线| 亚洲精品男人天堂| 欧美日韩激情一区二区| 亚洲成人77777| 亚洲人成在线电影| a在线免费观看| 欧美怡春院一区二区三区| 99热这里有精品| 久久久国产精品一区二区三区| 日韩免费一区| 日本十八禁视频无遮挡| 美女mm1313爽爽久久久蜜臀| 亚洲欧美日韩色| 国产精品久久免费看| 日本熟伦人妇xxxx| 欧美日韩国产一级片| 五月天激情婷婷| 久久亚洲春色中文字幕| 成人免费无遮挡| 成人av资源| 日本午夜一区| 欧美 日韩 亚洲 一区| 狠狠色丁香婷婷综合| 美女久久久久久久久久| 一个色综合网站| 日韩欧美国产另类| 亚洲国产精品专区久久| 99视频免费在线观看| 国产精品久久久久久久app| 北条麻妃一区二区三区在线| a级黄色片网站| 天堂在线一区二区| 黄色激情在线观看| 1024成人网| 国产精品第六页| 亚洲男人av在线| 2020国产在线| 91久久偷偷做嫩草影院| 97欧美在线视频| 丁香婷婷激情网| 91色婷婷久久久久合中文| 久久久久成人网站| 日韩一区二区三区av| 五月天婷婷在线视频| 国产精品久久久久久久av电影| 天海翼精品一区二区三区| 99热久久这里只有精品| 国产精品18久久久久久久网站| 久久久综合av| 国产精品中文| 亚洲午夜精品福利| 蜜桃一区二区三区在线| 久久美女免费视频| 欧美性高跟鞋xxxxhd| 青青免费在线视频| 青青久久av北条麻妃海外网| 久久精品福利| 麻豆tv在线播放| 99久久精品一区| 国产极品美女高潮无套嗷嗷叫酒店| 日韩一级二级三级| 伊人影院蕉久影院在线播放| 亚洲在线免费视频| 欧美日韩ab| 国产女人18毛片水真多18| 亚洲第一久久影院| 天天操天天爱天天干| 久久久久久免费精品| 首页亚洲中字| 日本男人操女人| 国产精品欧美久久久久一区二区| 在线视频欧美亚洲| 久久亚洲欧美日韩精品专区| 国产一区二区三区国产精品| 日韩激情视频一区二区| a亚洲天堂av| 手机在线看片1024| 最近2019中文字幕在线高清| 99久久这里有精品| 搞av.com| 久久久亚洲欧洲日产国码αv| 久久精品无码av| 色噜噜狠狠色综合网图区| 91麻豆精品国产91久久久更新资源速度超快| 男人的天堂成人| 成人免费视频视频| 国产成人一级片| 中文字幕日本精品| 精品午夜av| 国模无码视频一区二区三区| 国产色综合久久| 91在线公开视频| 国模极品一区二区三区| 在线看成人短视频| 日韩av.com| 黄色成人在线免费| 超碰免费97在线观看| 亚洲自拍偷拍第一页| 国产精品久久久免费| 免费成人深夜蜜桃视频| 精品欧美乱码久久久久久1区2区| 九色porny自拍视频在线播放| 亚洲高清视频在线观看| 国产aⅴ综合色| 老熟妇仑乱一区二区av| 欧美成人网在线| 竹菊久久久久久久| 欧美激情第四页| 欧美日韩精品国产| 黄色国产网站在线播放| 精品一卡二卡三卡四卡日本乱码| 日本v片在线高清不卡在线观看| 欧美成人精品欧美一级| 亚洲网在线观看| av成人资源| 五月激情五月婷婷| 黑人巨大精品欧美一区免费视频| 老司机在线看片网av| 欧美h视频在线| 国产高清成人在线| 在线观看免费视频一区| 97碰在线观看| 欧美成人久久| 精品女人久久久| 亚洲精品中文字|