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 {
private int age;
private String name;
public User() {
}
public User( int age, String name) {
this .age = age; this .name = name;
}
public int getAge() {
return age;
}
public void setAge( int age)
{
this .age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
@Override
public String 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 implements Comparator<User> {
public int compare(User u1, User u2) {
if (u1.equals(u2)){
return 0 ;
} else if (u1.getAge() < u2.getAge()){
return 1 ;
} else if (u1.getAge() == u2.getAge()){
int f = u1.getName().compareTo(u2.getName());
if (f < 0 ){
return - 1 ;
}
return 0 ;
} else {
return - 1 ;
}
}
public static void
main(String[] args) {
List<User> users = new ArrayList<User>();
users.add( new User( 10 , "a" ));
users.add( new User( 11 , "d" ));
users.add( new User( 15 , "s" ));
users.add( new User( 6 , "x" ));
users.add( new User( 17 , "a" ));
users.add( new User( 17 , "b" ));
users.add( new User( 17 , "c" ));
users.add( new User( 17 , "d" ));
UserComparator comparator = new UserComparator();
Collections.sort(users, comparator);
for (User u : users){
System.out.println(u);
}
}
}
|
相關推薦
java中Comparator比較器的使用
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
java中Comparator 和 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
Java中Comparator進行對象排序
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 &
java中Timer定時器的使用
本博文只是簡單介紹一下Timer的使用方法。適用於初學者進行參考,希望大家多多指點。廢話不多說,直接上正題。 1、瞭解一下Timer類提供的方法 介紹幾個常用的方法: cancel() 終止此計時器,丟棄所有當前已安排的任務。 schedule(TimerTask t
Java實現程式碼-比較器
如下程式碼:import java.util.*; class company implements Comparable { private String name; private String technology; private double marketV
java中Comparator複習筆記
第一題目 /** 在一個集合中儲存了無序並且重複的字串,定義一個方法,讓其有序(字典順序),而且還不能去除重複 分析: 1,定義一個List集合,並存儲重複的無序的字串 2,定義方法對其排序保留重複 3,列印List集合**/ public static void ma
java中Comparator復習筆記
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介