数据结构Java书写代码对象信息的分类统计、查找和排序操作 本例目的: (1) 声明类作为泛型参数T的实际参数,比较对象相等及大小。 (2) 分别使用顺序表、排序顺序表存储对象序列,按姓名查找,按成绩排序 (3) 在顺序表类之外定义对顺序表进行特定操作的方法,顺序表作为方法参数。
时间: 2024-12-02 13:21:04 浏览: 0
在Java中,我们可以创建一些通用的数据结构来处理对象信息的分类统计、查找和排序。这里我们将使用泛型和自定义数据结构来实现这些功能:
1. 首先,我们创建一个`Comparable`接口的抽象基类`BaseObject`,让所有需要比较的对象都继承这个类,并实现`compareTo`方法。
```java
public abstract class BaseObject<T extends Comparable<T>> {
private T value;
public BaseObject(T value) {
this.value = value;
}
@Override
public int compareTo(T other) {
return this.value.compareTo(other);
}
}
```
2. 接着,定义两个顺序表数据结构:`SimpleList`(基本顺序表)和`SortedList`(排序顺序表)。它们都包含一个元素列表并实现了相关操作。
```java
public class SimpleList<T extends Comparable<T>> {
private List<T> elements;
// 添加、获取、删除元素等方法...
}
public class SortedList<T extends Comparable<T>> extends SimpleList<T> {
// 实现插入排序,保证内部列表有序...
public void insert(T element) {
elements.add(element);
Collections.sort(elements);
}
// 搜索方法,例如二分查找...
public int search(T target) {
int low = 0, high = elements.size() - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (elements.get(mid).equals(target)) {
return mid;
} else if (elements.get(mid).compareTo(target) < 0) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1; // 如果找不到目标元素
}
}
```
3. 现在,你可以这样使用这两个类:
```java
// 创建实例
SimpleList<Student> studentsList = new SimpleList<>();
SortedList<Student> sortedStudentsList = new SortedList<>();
// 插入学生对象
Student john = new Student("John", 85);
sortedStudentsList.insert(john);
// 查找特定学生的索引
int index = sortedStudentsList.search(new Student("John", 85));
if (index != -1) {
System.out.println("找到约翰的位置:" + index);
}
// 对成绩排序
Collections.sort(studentsList.elements);
```
阅读全文