文章目录
- 1. 自动装箱和自动拆箱
- 2. Object的equals方法
- 3. Comparable和Comparator接口
1. 自动装箱和自动拆箱
- 自动装箱:将基本数据类型自动转换为对应的包装类。
- 自动拆箱:将包装类自动转换为对应的基本数据类型。
显示装箱
int primitiveInt = 10;
// 显示装箱
Integer wrappedInt = Integer.valueOf(primitiveInt); // 使用静态方法
显示拆箱
Integer wrappedInt = 20;
// 显示拆箱
int primitiveInt = wrappedInt.intValue(); // 使用方法
2. Object的equals方法
Object
类的equals
方法用于比较对象的相等性,默认实现是基于引用的比较。- 通常还需要重写
hashCode
方法,以确保在使用哈希表等数据结构时的一致性。
3. Comparable和Comparator接口
用于集合中对对象的排序
当类实现Comparable
接口时,可以直接用Collection.sort
方法对对象集合进行排序。
当类没有实现Comparable
接口,或者需要多种排序方式时,可以使用Comparator
接口。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + " (" + age + ")";
}
}
class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return p1.age - p2.age; // 按年龄升序排序
}
}
class NameComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return p1.name.compareTo(p2.name); // 按名字升序排序
}
}
public class ComparatorExample {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 30));
people.add(new Person("Bob", 25));
people.add(new Person("Charlie", 35));
Collections.sort(people); // 使用Comparable进行排序
Collections.sort(people, new AgeComparator()); // 按年龄排序
System.out.println("按年龄排序: " + people);
Collections.sort(people, new NameComparator()); // 按名字排序
System.out.println("按名字排序: " + people);
}
}