• 线性查找算法


    前言

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


    具体实现

    • 实现类
    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 -
    一个努力中的公众号
    关注一下吧
    以上为本篇文章的主要内容,希望大家多提意见,如果喜欢记得点个推荐哦
    作者:Maggieq8324
    本文版权归作者和博客园共有,欢迎转载,转载时保留原作者和文章地址即可。
  • 相关阅读:
    常用centos命令,经常忘记
    大数据hadoop之最简单理解
    企业级私有镜像仓库Harbor
    docker 修改国内源
    docker镜像仓库
    Dockerfile
    通过docker搭建LNMP平台(以wordpress为例)
    蓝鲸问题库
    docker常用命令
    LVS+Keepalive双机热备 <转>
  • 原文地址:https://www.cnblogs.com/maggieq8324/p/14852680.html
Copyright © 2020-2023  润新知