编写一个Person类,该类有两个实例变量:name和age,构造一个Person对象数组,按姓名对Person对象进行排序,如果姓名重复,则继续按年龄进行排序。
时间: 2024-05-05 13:16:22 浏览: 15
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"{self.name}({self.age})"
def sort_persons(persons):
sorted_persons = sorted(persons, key=lambda p: (p.name, p.age))
return sorted_persons
# 测试
persons = [Person("Tom", 20), Person("Bob", 25), Person("Alice", 18), Person("Tom", 22)]
sorted_persons = sort_persons(persons)
print(sorted_persons)
# 输出:[Alice(18), Bob(25), Tom(20), Tom(22)]
```
相关问题
用Java编写一个Person类,该类有两个实例变量:name和age,构造一个Person对象数组,按姓名对Person对象进行排序,如果姓名重复,则继续按年龄进行排序。
以下是Java代码实现:
```
import java.util.*;
public class Person implements Comparable<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 int compareTo(Person other) {
int nameCompare = this.name.compareTo(other.name);
if (nameCompare != 0) {
return nameCompare;
} else {
return Integer.compare(this.age, other.age);
}
}
public static void main(String[] args) {
Person[] people = new Person[5];
people[0] = new Person("Alice", 25);
people[1] = new Person("Bob", 30);
people[2] = new Person("Charlie", 20);
people[3] = new Person("Alice", 20);
people[4] = new Person("Charlie", 25);
Arrays.sort(people);
for (Person person : people) {
System.out.println(person.getName() + " " + person.getAge());
}
}
}
```
在这个实现中,Person类实现了Comparable接口,以便能够进行排序。compareTo方法首先按照姓名进行比较,如果姓名相同,则按照年龄进行比较。在main方法中,我们创建了一个Person对象数组,对其进行排序,并输出每个人的姓名和年龄。输出结果如下:
```
Alice 20
Alice 25
Bob 30
Charlie 20
Charlie 25
```
JAVA写一个person类,成员变量有name和age
好的,以下是一个基本的Java Person类,包含有name和age成员变量:
```java
public 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 void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
```
这个类包含了一个构造函数和两个getter和setter方法,分别用于获取和设置name和age成员变量的值。