當前位置:首頁 » 編程語言 » 對象排序java

對象排序java

發布時間: 2023-01-28 18:10:56

java如何實現復雜對象的排序

List<List> list = new ArrayList<List>();
Collections.sort(list, new Comparator<List>(){
//重寫排序規則
public int compare(List o1, List o2) {
return 0;
}
});
裡面那個可以List可以封裝成bean,這樣就可以在bean里繼承Comparator,實現排序方法。一次排序不行可以多次排,關鍵看你的排序規則要寫對。

㈡ java對象數組排序

沒有必要建立一個class A出來的,用ArrayList 或者inertor或者set都可以有函數方法實現排序。

㈢ 用java程序對集合里的對象排序

要對對象排序,首先要在設計對象所屬類時實現Comparable介面。然後再CompareTo方法中設定排序規則。如要按漢字的拼音排序,可以調用CnToSpell.getFullSpell("字元串")方法,將漢字轉換成拼音字元串,然後調用字元串的比較函數即可。CnToSpell類可以上網查一下在那個包中,記不得了。

㈣ 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 如何對對象進行排序

糾正幾點錯誤:
首先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(List<Car> 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) {
List<Car> list = new ArrayList<Car>();

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 數組中的元素是對象,如何給對象排序

寫那麼麻煩干什麼呢,看我的!

Book[]books={newBook("j2me",12),newBook("j2se",5),newBook("j2ee",22)};
Arrays.sort(books,newComparator<Book>()
{
@Override
publicintcompare(Booko1,Booko2)
{
if(o1.getPrice()>o2.getPrice())
{
return1;
}
elseif(o1.getPrice()<o2.getPrice())
{
return-1;
}
else
{
return0;
}
}
});

㈦ java對象數組排序中如何讓性別為女的排在前面

可以使用if判斷的方法來將性別為女的排在前面,Java是一門面向對象的編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。

㈧ java 如何對自定義的對象進行排序

//把排序規則交給sort方法。該方法就回按照你自定義的規則進行排序 java.util.Arrays.sort(users,new MyComparator()); for (int i = 0; i<users.length; i++){ System.out.println (users[i]);}}}class User{ String name;int age ; public User(String name,int age){ this.name = name; this.age = age;} public String toString(){ return name+":::"+age;}}class MyComparator implements Comparator{ public int compare(Object obj1, Object obj2 ){ User u1 = (User)obj1; User u2 = (User)obj2; if(u1.ageu2.age){return 1;}else if(u1.age<u2.age){return -1;}else{//利用String自身的排序方法。 //如果年齡相同就按名字進行排序

㈨ Java怎樣用數組創建對象,並對對象里的屬性排序

publicclassEmployee{

publicEmployee(){
super();
//TODOAuto-generatedconstructorstub
}


publicEmployee(Stringno,Stringname,Floatsalary){
super();
this.no=no;
this.name=name;
this.salary=salary;
}

privateStringno;//工號
privateStringname;//姓名
privateFloatsalary=0f;//工資

publicStringgetNo(){
returnno;
}

publicvoidsetNo(Stringno){
this.no=no;
}

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicFloatgetSalary(){
returnsalary;
}

publicvoidsetSalary(Floatsalary){
this.salary=salary;
}


@Override
publicStringtoString(){
return"Employee[no="+no+",name="+name+",salary="+salary+"]";
}


}

publicclassTestEmployee{

publicstaticvoidmain(String[]args){
TestEmployeetestEmployee=newTestEmployee();
Employee[]emps=testEmployee.getEmployees();
emps=testEmployee.orderBySalary(emps);
for(inti=0;i<emps.length;i++){
System.out.println(emps[i]);
}
}

/**
*獲取一個隨機工資數3-5K
*@return
*/
publicFloatgetRandomFloat(){
DecimalFormatdcmFmt=newDecimalFormat("0.00");
Randomrand=newRandom();
floatf=0f;
while(f<3000){
f=rand.nextFloat()*5000;
}
returnFloat.parseFloat(dcmFmt.format(f));
}

/**
*獲取員工
*@return返回Employee[]數組length=50
*/
publicEmployee[]getEmployees(){
Employee[]emps=newEmployee[50];
for(inti=0;i<50;i++){
Stringno="no"+i;//初始化員工號
Stringname="name"+i;//初始化姓名
Floatsalary=getRandomFloat();//隨機產生一個工資數
emps[i]=newEmployee(no,name,salary);
}

returnemps;
}

/**
*根據工資高低進行排序
*@paramemps
*@return
*/
publicEmployee[]orderBySalary(Employee[]emps){
for(inti=0;i<emps.length;i++){
for(intj=i+1;j<emps.length;j++){
if(emps[i].getSalary()<emps[j].getSalary()){
Employeetemp=emps[i];
emps[i]=emps[j];
emps[j]=temp;
}
}
}
returnemps;
}



}

㈩ JAVA 數組中的元素是對象,如何給對象排序

Book[]books={newBook("j2me",12),newBook("j2se",5),newBook("j2ee",22)};
Arrays.sort(books,newComparator<Book>()
{
@Override
publicintcompare(Booko1,Booko2)
{
if(o1.getPrice()>o2.getPrice())
{
return1;
}
elseif(o1.getPrice()<o2.getPrice())
{
return-1;
}
else
{
return0;
}
}
});

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:582
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:876
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:571
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:757
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:673
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1000
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:244
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:103
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:795
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:701