`
raojl
  • 浏览: 208843 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

散列过滤

阅读更多

1.在一些字符串数组中,常会有重复的记录,比如手机号码,我们可以通过Hashtable来对其进行过滤

public String[] checkArray(String[] str)...{
        Hashtable
<String, String> hash=new Hashtable<String, String>();

        
for(int i=0;i<str.length;i++)...{
            
if(!hash.containsKey(str[i]))
                hash.put(str[i], str[i]);
        }


        Enumeration enumeration
=hash.keys();
        String[] str_new
=new String[hash.size()];
        
int i=0;

        
while(enumeration.hasMoreElements())...{
            str_new[i]
=enumeration.nextElement().toString();
            i
++;
        }

        
return str_new;
    }


示例:
        String[] mobile={"13811071500","13811071500","13811071501","13811071503","13811071501"};
        mobile=checkArray(mobile);
        for(int i=0;i<mobile.length;i++)
            System.out.println(mobile[i]);
       输出结果为:
        13811071503
        13811071501
        13811071500
2.A,B均为字符串数组,找出在A中存在,而在B中不存在的字符串
    public String[] compareArray(String[] A,String[] B){
        Hashtable<String, String> hash=new Hashtable<String, String>();
        Hashtable<String, String> hash_new=new Hashtable<String, String>();

        for(int i=0;i<B.length;i++)
            hash.put(B[i], B[i]);

        for(int i=0;i<A.length;i++){
            if(!hash.containsKey(A[i]))
                hash_new.put(A[i], A[i]);
        }

        String[] C=new String[hash_new.size()];
        int i=0;
        Enumeration enumeration=hash_new.keys();

        while(enumeration.hasMoreElements()){
            C[i]=enumeration.nextElement().toString();
            i++;
        }
        return C;
    }
示例:
        String[] mobile1={"13811071500","13811071501","13811071502","13811071503","13811071504"};
        String[] mobile2={"13811071500","13811071505","13811071502","13811071506","13811071504"};
        String[] mobile3=compareArray(mobile1,mobile2);
        for(int i=0;i<mobile3.length;i++)
            System.out.println(mobile[i]);
输出结果:
    13811071503
    13811071501
存在的问题:
每次都是倒序,可以再对程序稍加改动,变成正序。

 

3.将一个字符串数组中某一个特定的字符串过滤掉

/** *//**检验一个字符串数组,若包含某一特定的字符串,则将该字符串从数组中删
除,返回剩余的字符串数组
     * 
@param str_array  字符串数组
     * 
@param str_remove 待删除的字符串
     * 
@return 过滤后的字符串
     
*/

    
public String[] removeStrFromArray(String[] str_array,String
str_remove)
...{
        Hashtable
<String, String> hash=new Hashtable<String, String>();
        
for(int i=0;i<str_array.length;i++)...{
            
if(!str_array[i].equals(str_remove))
                hash.put(str_array[i], str_array[i]);
        }

        
//生成一个新的数组
        String[] str_new=new String[hash.size()];
        
int i=0;
        Enumeration enumeration
=hash.keys();
        
while(enumeration.hasMoreElements())...{
            str_new[i]
=enumeration.nextElement().toString();
            i
++;
        }

        
return str_new;
    }

 

 

分享到:
评论

相关推荐

    LAN9218 datasheet

    7. 内置的功能还包括前导码生成和去除、32位CRC自动生成和校验、自动填充和去除负载、环回模式等,提供了灵活的地址过滤模式,如48位完美地址和64个散列过滤的多播地址,以及通过或不通过广播帧的选择。 综上所述,...

    LAN9514-datasheet

    - 支持灵活的地址过滤模式,包括48位精确地址过滤和64个散列过滤的多播地址。 - 支持唤醒包检测。 - 自动协商、HP Auto-MDIX等集成PHY功能,以及自动极性检测和纠正。 ### 应用领域 LAN9514芯片适用于多种应用,...

    HashingFunctions:为布隆过滤器实现散列函数

    散列函数是一个函数,它接受一些输入(对于这个 repo,我们将处理字符串),并输出指定范围内的整数。 散列函数有四个主要属性要符合: 决定论 给定相同的输入,散列函数应始终返回相同的输出,而不管该函数何时或...

    Cuckoo过滤器:实际上比 Bloom 更好_Go语言_代码_相关文件_下载

    布谷鸟过滤器基于布谷鸟散列(因此称为布谷鸟过滤器)。它本质上是一个存储每个密钥指纹的布谷鸟哈希表。Cuckoo 哈希表可以非常紧凑,因此对于需要低误报率 () 的应用程序,cuckoo 过滤器可以比传统的 Bloom 过滤器...

    09-散列3. Hashing - Hard Version (30).zip

    6. 常见散列数据结构:如散列表(Hash Table)、布隆过滤器(Bloom Filter)等。散列表是一种高效的数据结构,支持快速的插入、删除和查找操作;布隆过滤器则用于判断一个元素是否可能存在于集合中,有一定的误判率...

    使用 FNV 进行快速散列的 JavaScript 布隆过滤器_JavaScript_代码_相关文件_下载

    布隆过滤器是一种空间效率极高的概率数据结构,用于判断一个元素是否可能在一个集合中。在JavaScript中,我们可以使用各种哈希函数来实现它,其中FNV(Fowler-Noll-Vo)是一种常见的非加密哈希函数,因其简单且性能...

    行业分类-设备装置-生成和匹配多媒体内容的散列.zip

    - **社交媒体分析**:在社交媒体平台上,散列有助于识别和过滤重复或相似的帖子,提升用户体验。 然而,散列技术也有其局限性,如无法恢复原始数据(不可逆性),以及可能存在散列碰撞(不同的输入可能得到相同的...

    bloomfilter.js, 使用FNV的JavaScript bloom filter快速散列.zip

    bloomfilter.js, 使用FNV的JavaScript bloom filter快速散列 Bloom过滤器This过滤器实现使用非加密 Fowler-Noll-Vo散列函数来实现速度。用法var bloom = new BloomFilter( 32 * 256,//number of bits to all

    bloomish:具有可参数化散列函数的通用布隆过滤器

    散列函数需要输出一些值来识别项目,归约函数用于组合集合成员的散列,成员函数用于根据过滤器测试项目的散列。 Bloomish 只是将它们联系在一起的结构。 import Bloomish from 'bloomish';let items = [...];let ...

    html散列特效

    散列特效通常指的是对数据进行哈希处理后产生的结果,而在网页设计中,"散列图片"可能是指通过特定算法对图片进行处理,创造出一种独特的视觉表现,例如像素化、模糊化或颜色过滤等。这些特效可以增强用户体验,使...

    行业分类-设备装置-用于使用距离关联性散列法对媒体数据库定址的系统和方法.zip

    4. **索引构建**:基于散列值建立索引结构,如布隆过滤器或多级散列,以便快速查询。 5. **查询执行**:用户输入查询条件后,系统通过散列和索引找到最接近的匹配项。 文件列表中的“用于使用距离关联性散列法对...

    基于文件过滤驱动和事件触发的网页防篡改机制

    基于文件过滤驱动和事件触发的网页防篡改机制是一种创新的安全解决方案,旨在保护网络服务器上的网页免受恶意篡改。该机制的核心在于结合了文件过滤驱动技术和事件触发机制,通过实时监测网页文件的属性变化,确保...

    xorf:Xor过滤器-高效的概率哈希集。 比布卢姆和布谷鸟过滤器更快,更小

    像xor过滤器之类的过滤器通常与较大的基于散列的数据结构结合使用,其中过滤器执行工作的“第一遍”以避免不必要地使用更昂贵的资源。 例如,诸如xor过滤器之类的过滤器可用于缓存中的或在浏览器中 。 Xor过滤器比...

    JAVA实现较完善的布隆过滤器的示例代码

    布隆过滤器的误判率取决于你使用多少个不同的散列函数,代码中给出了MisjudgmentRate枚举类来参考误判率。 在本文中,我们首先假定有4个不同散列函数,传入一个字符串并进行一次插入操作,这时会进行4次散列,假设...

    区分谱散列用于紧凑型掌形图表示

    这些方法通常对掌纹图像进行滤波处理,并对过滤后的图像进行量化,以提取二进制代码。这种方法并没有加入对代码紧凑性的任何约束,因此可能会导致代码中包含一些冗余信息,增加了存储和操作成本。为了解决这一问题,...

    Hbase布隆过滤器详解

    哈希表和哈希函数是布隆过滤器的基础,哈希函数应具备良好的散列特性,尽量减少冲突。哈希碰撞是不可避免的,解决方法通常是采用开放寻址法或链地址法。在布隆过滤器中,多个哈希函数可以降低冲突的影响,即使存在...

    content-filter:一个简单但功能强大的内容过滤器。 过滤任何字符,字符集或单词的URL和HTML正文内容(表单数据)。 通过这种方式,可以保护NoSQL数据库免于散列注入尝试

    内容过滤器 过滤器来对任何字符,字符集,一个字(俚语,臭骂或其他)或一个句子,并返回一个Express.js中间件HTML请求的内容。 中间件检查请求的URL和HTML正文内容(通过使用body-parser)并阻止该请求,如果有禁止...

    基于SHA-1算法邮件过滤系统的研究与实现

    SHA-1(Secure Hash Algorithm 1)是一种广泛应用于网络安全领域的散列函数,它能够将任意长度的信息转化为固定长度的摘要值,具有抗碰撞性和不可逆性,为数据完整性验证提供了基础。 邮件过滤系统的主要目的是防止...

Global site tag (gtag.js) - Google Analytics