java对象排序

java 对象排序,也是根据对象某个属性进行排序   例如:苹果对象排序,以大小为根据

import java.lang.reflect.Array;
import java.util.*;

/**
 * Created by Bright on 2017/7/2.
 */
public class compareTest {
    public static void main(String[] args) {
        List<Apple> apples = new ArrayList<Apple>();
        apples.add(new Apple(2));
        apples.add(new Apple(3));
        apples.add(new Apple(1));
        apples.add(new Apple(5));

        Collections.sort(apples, new Apple());

        System.out.println(apples);


    }
}

class Apple implements Comparator<Apple>{

    private int size;

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }

    public Apple(){

    }
    public Apple(int size) {
        this.size = size;
    }

    @Override
    public int compare(Apple o1, Apple o2) {
        return Integer.compare(o1.getSize(),o2.getSize());
    }

    @Override
    public String toString() {
        return "Apple{" +
                "size=" + size +
                '}';
    }
}
排序后输出:
[Apple{size=1}, Apple{size=2}, Apple{size=3}, Apple{size=5}]


Java对象排序通常有以下几种实现方法: 1. **使用`Collections.sort()`排序对象列表**:该方法适用于实现了`Comparable`接口的集合。在使用时,需要提供一个比较器(`Comparator`)来定义对象排序逻辑。这种方式可以对列表中的对象进行排序,让编程更快捷 [^1][^2][^3]。 2. **使用`Arrays.sort()`排序对象数组**:此方法适用于基本类型数组和对象数组。同样,在对对象数组排序时,也需要提供合适的比较器来确定排序规则 [^2][^3]。 3. **使用Java 8+的`Stream API`排序**:借助`Stream API`可以以流式操作的方式对对象进行排序,这种方式提供了更简洁和灵活的排序操作 [^3]。 4. **实现`Comparable`接口**:为实现类提供了一种自然的排序方式,允许对该类的对象进行自动排序。像`Byte`、`Character`、`Long`等类都实现了`Comparable`接口,它们各自有对应的自然排序规则,如`Byte`是按有符号数值排序,`String`是按字典序排序等 [^4]。 以下是使用`Collections.sort()`和`Arrays.sort()`的代码示例: ```java import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Person{name='" + name + "', age=" + age + "}"; } } public class ObjectSortingExample { public static void main(String[] args) { // 使用Collections.sort()对对象列表排序 List<Person> personList = new ArrayList<>(); personList.add(new Person("Alice", 25)); personList.add(new Person("Bob", 20)); personList.add(new Person("Charlie", 30)); // 使用匿名内部类创建比较器 Collections.sort(personList, new Comparator<Person>() { @Override public int compare(Person p1, Person p2) { return p1.getAge() - p2.getAge(); } }); System.out.println("Sorted person list by age: " + personList); // 使用Arrays.sort()对对象数组排序 Person[] personArray = { new Person("David", 22), new Person("Eve", 27), new Person("Frank", 18) }; Arrays.sort(personArray, new Comparator<Person>() { @Override public int compare(Person p1, Person p2) { return p1.getName().compareTo(p2.getName()); } }); System.out.println("Sorted person array by name: " + Arrays.toString(personArray)); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值