索千 2023-04-09 22:10 采纳率: 74.4%
浏览 13
已结题

泛型的实际应用,该怎么敲?

这用泛型该怎么做?不太懂泛型的实际应用,要是用了泛型,该怎么定义数组存储?成员变量又该怎么处理?望代码

img

img

  • 写回答

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());
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月9日

悬赏问题

  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写