本文目錄一覽:
- 1、java 如何對對象進行排序
- 2、Java中怎麼給一個對象排序
- 3、java的list集合如何根據對象中的某個字段排序
- 4、怎麼用java程序對集合里的對象按對象的某個屬性排序,這個屬性是日期(YYYY-MM-DD hh:mm),最好有個例子。
- 5、java集合框架中如何實現對對象的排序
java 如何對對象進行排序
糾正幾點錯誤:
首先TreeSet就是一個二叉樹排序容器,由用戶定義對象比較規則,然後接口回調進行排序,也就是說當對象在add到容器後實際上已經按照你定義的排序規則排序完畢了,所以你也沒有必要再單獨寫一個排序方法。
如果你想單獨寫一個排序算法,傳送TreeSet()這樣已經排序完畢的容器當然是多此一舉的。 你可以用List保存你的對象,這樣容器保存的就是原始的對象集合(按add()的先後順序排序),這樣才能真正發揮排序方法的功能.
其次,你的冒泡排序算法是按照價格從小到大的,而你add對象的時候就是從小到大的,所以一直沒有滿足if(iArr[j].price iArr[j+1].price) { 這個條件,可以把號改成號,或者打亂add的順序,這樣就能看出效果。
另外從容器內取元素應該用循環,而不應該寫死。你應該知道,所以程序我也沒修改~
下面的程序在原作上面稍微修改了一下,自己可以比較一下區別
package cn.com.csuinfo.Mycollec;
import java.util.ArrayList;
import java.util.List;
public class TestMySort {
public void BubbleSort(ListCar list) {
Car c1;
Car c2;
Car c3;
Car c4;
c1 = list.get(0);// 將set中的元素一個個取出來,再存入Car數組中
c2 = list.get(1);
c3 = list.get(2);
c4 = list.get(3);
Car[] iArr = { c1, c2, c3, c4 }; // 數組中存放了Car類型的四個對象
Car tmp = null;
int len = list.size();
for (int i = 0; i len – 1; i++) {// 對數組中的對象按屬性值price的大小進行排序
for (int j = 0; j len – 1 – i; j++) {
if (iArr[j].price iArr[j + 1].price) {
tmp = iArr[j];
iArr[j] = iArr[j + 1];
iArr[j + 1] = tmp;
System.out.println(“change”);// 測試之注意!:程序沒執行到此來???
}
}
}
for (Car car : iArr) {
System.out.println(car);
}
}
public static void main(String[] args) {
ListCar list = new ArrayListCar();
Car car1 = new Car(“Ford”, 164000);
Car car2 = new Car(“Honda”, 286000);
Car car3 = new Car(“Toyota”, 410000);
Car car4 = new Car(“Benz”, 850000);
list.add(car1);
list.add(car2);
list.add(car3);
list.add(car4);
System.out.println(“***********************“”);
new TestMySort().BubbleSort(list);
}
}
Java中怎麼給一個對象排序
Comparable 是一個自身以前支持自比擬的(如String ,Integer) 的接口 Comparator 可以說是一個 自用的比擬器 當對象自身 不支持自排序和自比擬函數的時辰 咱們可以議決完成Compartor 來比擬兩對象的大小 Comparable 是一個比擬通用的接口 用戶可以議決他完成 排序功用 而Comparator 可以看作一種算法 一種設計方式 (可以看作是一個戰略方式 就是不改動對象自身,而用一個戰略對象改動對象行為) Comparable 相比擬較固定 與詳細類綁定 , Comparator 比擬靈敏 可以與任何須要完成功用的類 綁定 Comparable 可以說是 靜態綁定 Comparator 可以說是靜態綁定 Comparable 此接口強行對完成它的每個類的對象執行全體排序。此排序被稱為該類的自然排序,類的 compareTo 方法被稱為它的自然比擬方法。 完成此接口的對象列表(和數組)可以議決 Collections.sort(和 Arrays.sort)執行自動排序。完成此接口的對象可以用作有序映射表中的鍵或有序集合中的元素,無需指定比擬器。 關於類 C 的每一個 e1 和 e2 來說,當且僅當 (e1.compareTo((Object)e2) == 0) 與 e1.equals((Object)e2) 具有類似的布爾值時,類 C 的自然排序才叫做與 equals 一致。留意,null 不是任何類的實例,即便 e.equals(null) 前往 false,e.compareTo(null) 也會拋出 NullPointerException。 劇烈推薦(雖然不是必需的)使自然排序與 equals 一致。這是由於在運用其自然排序與 equals 不一致的元素(或鍵)時,沒有顯式比擬器的有序集合(和有序映射表)行為表現“怪異”。尤其是,這樣的有序集合(或有序映射表)違犯了依據 equals 方法定義的集合(或映射表)的慣例協議。 而Comparator 比擬函數強行對某些對象 collection 執行全體排序。可以將 Comparator 傳遞給 sort 方法(如 Collections.sort),從而准許在排序順序上完成精確控制。還可以運用 Comparator 來控制某些數據結構(如 TreeSet 或 TreeMap)的順序。
java的list集合如何根據對象中的某個字段排序
下面的代碼是根據學生年齡排序學生list 的一個例子:
import java.util.ArrayList;
import java.util.List;
class Student {
private String name;
private int age;
public Student(String name, int age) {
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;
}
@Override
public String toString() {
return “Perosn [name=” + name + “, age=” + age + “]”;
}
}
public class App {
public static void main(String[] args) {
ListStudent students = new ArrayList();
students.add(new Student(“abc”, 12));
students.add(new Student(“bcd”, 20));
students.add(new Student(“cde”, 17));
students.add(new Student(“def”, 25));
students.add(new Student(“efg”, 15));
students.sort((x, y) – Integer.compare(x.getAge(), y.getAge()));
for (Student stu : students) {
System.out.println(stu);
}
}
}
運行結果:
怎麼用java程序對集合里的對象按對象的某個屬性排序,這個屬性是日期(YYYY-MM-DD hh:mm),最好有個例子。
你的對象要實現Compare接口
class MyBean implements ComparableMyBean {
private Date sortKey;
public Date getSortKey() {
return sortKey;
}
public void setSortKey(Date sortKey) {
this.sortKey = sortKey;
}
@Override
public int compareTo(MyBean o) {
return this.sortKey.compareTo(o.getSortKey());
}
}
然後直接調用Collections.sort(list);
public static void main(String[] args) throws ParseException {
ListMyBean list = new ArrayListMyBean();
Collections.sort(list);
}
java集合框架中如何實現對對象的排序
Collections.sort(listA, new ComparatorPerson() {
public int compare(Person arg0, Person arg1) {
return arg0.getOrder().compareTo(arg1.getOrder());
}
});
第一個參數listA是你要排序的集合,第二個是一個比較器,Person表示你listA中類的類型,compare方法表示你要怎麼對Person對象排序,比如這裡是按Person的order屬性
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/285380.html