Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按一组行中的多个单独字段搜索的数据类型?_Java_Search_Types - Fatal编程技术网

Java 按一组行中的多个单独字段搜索的数据类型?

Java 按一组行中的多个单独字段搜索的数据类型?,java,search,types,Java,Search,Types,假设内存中有一组包含选定字段的行 如何按等于某个值或在某个范围内的特定字段组织对所有行的快速搜索(每次选择单个行) 用于组织此类搜索的数据类型是什么 对于相等条件搜索,我看到了一种方法,即维护每个字段的哈希表,用于范围搜索树或堆结构。因此,它通过聚合现有的定义良好的数据结构来构建 这是一种正确的方法,还是有另一种数据类型可以处理由某一行从行集中选择的点或范围(但可以用于第一行和第二行) 我使用Java运行时。标准类库中有什么特别的东西吗 我的代码示例: class Empl { publ

假设内存中有一组包含选定字段的行

如何按等于某个值或在某个范围内的特定字段组织对所有行的快速搜索(每次选择单个行)

用于组织此类搜索的数据类型是什么

对于相等条件搜索,我看到了一种方法,即维护每个字段的哈希表,用于范围搜索树或堆结构。因此,它通过聚合现有的定义良好的数据结构来构建

这是一种正确的方法,还是有另一种数据类型可以处理由某一行从行集中选择的点或范围(但可以用于第一行和第二行)

我使用Java运行时。标准类库中有什么特别的东西吗

我的代码示例:

class Empl {
    public String phone;
    public String ldap;
    public String name;
}

class EmplSearchService {
    Map<String, Empl> lookupByPhone = new ConcurrentHashMap<>();
    Map<String, Empl> lookupByLdap = new ConcurrentHashMap<>();

    public void add(Empl e) {
         lookupByPhone.put(e.phone, e);
         lookupByLdap.put(e.ldap, e);
    }

    public Empl findByEmail(String email) {
         return lookupByPhone.get(email);
    }
    public Empl findByLdap(String ldap) {
         return lookupByLdap.get(ldap);
    }
}
class emp{
公用串电话;
公共字符串ldap;
公共字符串名称;
}
类搜索服务{
Map lookupByPhone=new ConcurrentHashMap();
Map lookupByLdap=新的ConcurrentHashMap();
公共作废添加(雇员){
lookupByPhone.put(e.phone,e);
lookupByLdap.put(e.ldap,e);
}
公共雇员findByEmail(字符串电子邮件){
返回lookupByPhone.get(电子邮件);
}
公共emp findByLdap(字符串ldap){
返回lookupByLdap.get(ldap);
}
}

DB technology的标准技术是反转,适用于重复出现的V型离散值字段。你创造

Map<V,BitSet> value2indices
映射值2索引
其中,位集表示包含V中某些值的记录索引

这不仅会为您提供出现某些值的所有行的索引值。还可以计算某个范围(或任意集)的值的位集并集。可以为组合两个或多个条件的查询计算位集的交集


当然,需要考虑内存需求。

您指的是行和字段,但我假设您指的是对象?换句话说,您要问的是如何快速搜索集合中满足某些条件的对象?虽然您提到选择行,所以您可能指的是JTable?基本上,您需要重新表述这个问题,以便更清楚地了解您的要求。
JTable
awt
存储对象,不支持所需的操作。我所说的行和字段是指常规的Java对象,但问题并不局限于Java平台。