1. 程式人生 > >java中Comparator比較器的使用

java中Comparator比較器的使用

java中Comparator的使用:對使用者集合進行排序,先按照年齡大小排序,若年齡相等,則按照姓名排序 標籤: <無>
public int compare(User u1, User u2) {}

此方法返回一個int型別的資料,但是此int的值只能是一下三種:

1:表示大於

-1:表示小於

0:表示相等

例:   從小到大的順序排列

public class FielNameComparator implements Comparator {
    @Override
public int compare(Object o1, Object o2) {
        String fileName1 = (String) o1;
String fileName2 = (String) o2;
String[] aa1 = fileName1.split(".xml")[0].split("_"); String b1 = aa1[aa1.length - 1]; long l1 = Long.parseLong(b1); String[] aa2 = fileName2.split(".xml")[0].split("_"); String b2 = aa2[aa2.length - 1]; long l2 = Long.parseLong(b2); if(l1<l2) { return -1; }else if
(l1>l2) { return 1; } return 0; } }


?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 package com.mango.compare; public class User { privateintage; privateString name; publicUser() { } publicUser(intage, String name) { this.age = age;
this.name = name; } publicintgetAge() { returnage; } publicvoidsetAge(intage) { this.age = age; } publicString getName() { returnname; } publicvoidsetName(String name) { this.name = name; } @Override publicString toString() { return"User [age="+ age + ", name="+ name + "]"; } }

2. [程式碼][Java]程式碼    

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 package com.mango.compare; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class UserComparator implementsComparator<User> { public intcompare(User u1, User u2) { if(u1.equals(u2)){ return0; }elseif(u1.getAge() < u2.getAge()){ return1; }elseif(u1.getAge() == u2.getAge()){ intf = u1.getName().compareTo(u2.getName()); if(f <0){ return-1; } return0; }else{ return-1; } } publicstaticvoid main(String[] args) { List<User> users =newArrayList<User>(); users.add(newUser(10,"a")); users.add(newUser(11,"d")); users.add(newUser(15,"s")); users.add(newUser(6,"x")); users.add(newUser(17,"a")); users.add(newUser(17,"b")); users.add(newUser(17,"c")); users.add(newUser(17,"d")); UserComparator comparator =newUserComparator(); Collections.sort(users, comparator); for(User u : users){ System.out.println(u); } } }

相關推薦

javaComparator比較的使用

java中Comparator的使用:對使用者集合進行排序,先按照年齡大小排序,若年齡相等,則按照姓名排序 標籤: <無>public int compare(User u1, User u2) {} 此方法返回一個int型別的資料,但是此int的值只能是

java比較comparetor

如果return 0;那就是相同,只返回一個.因為set集合元素唯一,為啥set集合元素唯一?不允許重複呢?這要看他們的hashcode和equals方法是如何重寫的. 如果當前的,大於要比較的.返回差,正數 如果當前的,小於要比較的,返回差,負數 這樣的結果就是從小到

JAVA比較返回值所規定的排序方式

學過JAVA的人都知道JAVA中有兩種常見的比較器, comparable和comparator。而比較器的用途一般是用來定義排序的規則, 這裡我就comparable中的compareTo()方法中3個返回值所規定的排序順序。排序順序相同, 這裡只對compa

java.util下有一個Comparator(比較)

ack list clas 必須 har ble sort rabl short java.util下有一個Comparator(比較器) 它擁有compare(),用來比較兩個方法。 要生成比較器,則用Sort中Sort(List,List(Compate)) 第二種方法

Java Comparable排序介面和Comparator比較介面

       實現Comparable介面的類支援排序,假設現在存在“實現Comparable介面的類的物件的List列表(或陣列)”,則該List列表(或陣列)可以通過 Collections.so

javaComparator 和 Comparable的區別

true public arr ins ride err instance ural code 1、Comparable的代碼如下: public interface Comparable<T> { public int compareTo(T o);

Java叠代Iterator的使用

兩種 適合 討論 沒有 entryset 當前 import 是否 set Java集合類中Map接口下的相關類並沒有像Collection接口的相關類一樣實現get()方法,因此在要實現遍歷輸出的場景中沒法直接用get()方法來取得對象中的數據,但Java本身提供了另一種

隨筆⑦ Java比較 ==,equals以及精度對比較的影響

情況 數值 數據 his static 作用 進行 返回 浮點數 Java中的比較 ==,equals ① 對於==,如果是作用於基本數據類型的變量,則直接比較其存儲的"值"是否相等;如果是作用於引用類型的變量,則比較的是所指向的對象的地址。 ② 對於equals方法,

【轉】編寫高質量代碼改善C#程序的157個建議——建議30:使用LINQ取代集合比較和叠代

main tor 命名空間 span line 繼承 new each 類型 建議30:使用LINQ取代集合中的比較器和叠代器 LINQ提供了類似於SQL的語法來實現遍歷、篩選與投影集合的功能。 static void Main(string[] ar

JavaComparator進行對象排序

pri 排序 pub use clas .com get 變化 class Java在8後引入了lambda表達式和流,使得排序方法有了變化 class User { int id; String name; public User(int id,

Java字串比較方法equals()和equalsIgnoreCase()的區別

1. equals() equals( )是比較兩個字串是否相等,它的一般表示式如下: /** * Compares this string to the specified object. The result is {@code * true} if and o

Java8 List去掉重複物件——contains方法、Comparator比較

一、去除List中重複的String public List<String> removeStringListDupli(List<String> stringList) { Set<String> set = new LinkedHashSet<

淺談java比較機制

對於程式語言來說,比較機制是核心機制之一,因為平時內建的比較機制,導致我對這個知識點沒有啥概念,總覺得他們本來就可以比較,最近在看Java容器的時候,發現原來Java做的封裝太好了,導致我們平時一般是不會接觸到這點。廢話不多說,來看下Java中的比較機制。 1:comparable介面

java的攔截(登入)

題目要點: 如果登入了就跳轉到首頁,如果沒有登入直接訪問首頁的話,就攔截無法訪問,登入了就可以訪問主頁。 登入介面: <%--   Created by IntelliJ IDEA.   User: Smile   Date: 2018/11/12 &

javaTimer定時的使用

本博文只是簡單介紹一下Timer的使用方法。適用於初學者進行參考,希望大家多多指點。廢話不多說,直接上正題。 1、瞭解一下Timer類提供的方法 介紹幾個常用的方法: cancel() 終止此計時器,丟棄所有當前已安排的任務。 schedule(TimerTask t

Java實現程式碼-比較

如下程式碼:import java.util.*; class company implements Comparable { private String name; private String technology; private double marketV

javaComparator複習筆記

第一題目 /** 在一個集合中儲存了無序並且重複的字串,定義一個方法,讓其有序(字典順序),而且還不能去除重複 分析: 1,定義一個List集合,並存儲重複的無序的字串 2,定義方法對其排序保留重複 3,列印List集合**/ public static void ma

javaComparator復習筆記

code 比較 quit 創建 har break 生成 cas rgs 第一題目 /** 在一個集合中存儲了無序並且重復的字符串,定義一個方法,讓其有序(字典順序),而且還不能去除重復 分析: 1,定義一個List集合,並存儲重復的無序的字符串 2,定義方法對其排序

Java迭代是什麼?

  可迭代是Java集合框架下的所有集合類的一種共性,也就是把集合中的所有元素遍歷一遍。迭代的過程需要依賴一個迭代器物件,那麼什麼是迭代器呢?    迭代器(Iterator)模式,又叫做遊標模式,它

在匿名內部類宣告比較

1.java本身的集合有著Collections.sort 2.陣列有Array.sort 3.重寫比較器 在集合中,例如List<Student> list這種物件,需要要按照student的考試分數排序,可以直接讓student類實現comparable介