当前位置:首页 » 编程语言 » 对象排序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