尝试使用跳表优化Linked List (Java 1.8),不知道应该使用什么来充当索引辅助查询

我想写一个跳表类(类似优化LinkedList),里面用来存储对象
但是我不知道应该使用什么当作索引,
一开始我的想法是模仿HashMap那样子使用对象的Hash值计算去当作索引,查找的时候使用对象的Hash值去查找,后面才反应过来,我拿到了这个对象根本就不用再去找了,没拿到对象也不知道Hash值,还是需要去遍历链表。
所以我有点迷惑,不知道应该使用对象的什么特征去当这个索引,因为如果使用Key Value的话如果数据超过万条的话,谁也不记得某个对象的Key是多少
而且查询是的话一般是使用对象的属性当作查询条件去遍历的。
那我有没有办法使用对象的特征去当索引,比如就是当我通过对象的某个属性去当查询条件的时候,我依旧可以使用跳表的方式查询

不太懂你的意思,你想建的索引是对list中的对象整体的hash还是对象的某个属性,搜索的时候又是按照什么来搜索的呢?

你想根据对象的属性去做跳表查询,那就在对象保存到集合之前先建立属性-对象的一对多映射。
比如有Person对象有name,age等属性。
简单的方式就是直接用Map<String,List<Person>>,map的key就是name或者age的值,value就是属性等于name或者age的Person对象数组。
根据name查就可以直接map.get(name)

不知道你是不是想要的是这个样子


public class Test {
    private String name;
    private String age;

    public Test(String name) {
        this.name = name;
    }

    public Test(String name, String age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        //只要name相同就返回
        return o instanceof  Test && name.equals(((Test) o).name) ;
    }

    @Override
    public int hashCode() {
        int result = 17;
        result = 37 * result + name.hashCode();
        return result;
    }

    public static void main(String[] args) {
        Map<Test,Integer> map = new HashMap<>();
        //构建一个name=a age=18的对象
        Test k1 = new Test("a", "18");
        map.put(k1,999);

        //查询name=a的Test对象
        Integer integer = map.get(new Test("a"));
        System.out.println(integer);
    }

}