本文目录一览:
- 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属性