这用泛型该怎么做?不太懂泛型的实际应用,要是用了泛型,该怎么定义数组存储?成员变量又该怎么处理?望代码
2条回答 默认 最新
- threenewbee 2023-04-09 22:24关注
这个你定义2个类,Person1类,拥有姓名性别年龄三个字段
Person2类,拥有姓名电话字段
然后排序算法 T 代表任意类型找了一个类似的例子,你看下
public class Person1 { private String name; private String gender; private int age; public Person1(String name, String gender, int age) { this.name = name; this.gender = gender; this.age = age; } public String getName() { return name; } public String getGender() { return gender; } public int getAge() { return age; } } public class Person2 { private String name; private String phone; public Person2(String name, String phone) { this.name = name; this.phone = phone; } public String getName() { return name; } public String getPhone() { return phone; } } public class Sorter { public interface Selector<T> { int compare(T obj1, T obj2); } public static <T> void sort(T[] data, Selector<T> selector) { int len = data.length; for (int i = 0; i < len - 1; i++) { boolean flag = true; for (int j = 0; j < len - 1 - i; j++) { if (selector.compare(data[j], data[j + 1]) > 0) { T temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; flag = false; } } if (flag) { break; } } } }
调用
Person1[] persons1 = { new Person1("Amy", "Female", 25), new Person1("Bob", "Male", 30), new Person1("Charlie", "Male", 20), new Person1("David", "Male", 35), new Person1("Emily", "Female", 28) }; Sorter.sort(persons1, new Sorter.Selector<Person1>() { public int compare(Person1 obj1, Person1 obj2) { if (obj1.getAge() > obj2.getAge()) { return 1; } else if (obj1.getAge() < obj2.getAge()) { return -1; } else { return 0; } } }); for (Person1 p : persons1) { System.out.println(p.getName() + " " + p.getGender() + " " + p.getAge()); } System.out.println(); Person2[] persons2 = { new Person2("Amy", "123456"), new Person2("Bob", "234567"), new Person2("Charlie", "345678"), new Person2("David", "456789"), new Person2("Emily", "567890") }; Sorter.sort(persons2, new Sorter.Selector<Person2>() { public int compare(Person2 obj1, Person2 obj2) { return obj1.getName().compareTo(obj2.getName()); } }); for (Person2 p : persons2) { System.out.println(p.getName() + " " + p.getPhone()); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥100 连续两帧图像高速减法
- ¥15 组策略中的计算机配置策略无法下发
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊
- ¥15 TLS1.2协议通信解密
- ¥40 图书信息管理系统程序编写