线性查找算法

前言

线性查找又称顺序查找,是一种最简单的查找方法,其基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的值相等,则查找成功;若比较结果与文件中的记录都不等,则查找失败。


具体实现

  • 实现类
public class LinearSearch {

    /**
     * 私有构造函数,该类不被别人创建,直接使用该类的search函数
     */
    private LinearSearch(){}

    /**
     * 泛型线性查找
     * 于自定义的类,要重写equals方法
     * @param data
     * @param target
     * @param <T>
     * @return
     */
    public static <T> int search(T[] data, T target) {
        for (int i = 0; i < data.length; i++) {
            if (data[i].equals(target)) {
                return i;
            }
        }

        return -1;
    }

    public static void main(String[] args) {
        /**
         * 测试一
         */
        Integer[] data = {11, 12, 66, 34, 65, 36, 60};
        int result = LinearSearch.search(data, 34);
        System.out.println(result);

        /**
         * 测试二 自定义类
         */
        Student[] students = {
                new Student("1", "张三"),
                new Student("2", "李四"),
                new Student("3", "王二")
        };

        System.out.println(LinearSearch.search(students, new Student("3", "王二")));
    }

}
  • 自定义类
public class Student {

    private String id;
    private String name;

    public Student(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    /**
     * 重新equals方法
     * @param obj
     * @return
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            //地址相等
            return true;
        }

        if (obj == null) {
            return false;
        }

        if (obj.getClass() != this.getClass()) {
            return false;
        }

        /**
         * 需要比较的字段相等,则这两个对象相等
         */
        Student other = (Student) obj;
        return this.name.equals(other.name) && this.id.equals(other.id);
    }

}
- End -
一个努力中的公众号
关注一下吧
posted @ 2021-06-05 14:25  Maggieq8324  阅读(68)  评论(0编辑  收藏  举报