首页 > 代码库 > 算法6-5:哈希表应用之集合

算法6-5:哈希表应用之集合

可以通过哈希表实现高效的集合操作。


接口


一个集合对象可以包含了以下接口:

public interface Set<Key extends Comparable<Key>> {
    public void add(Key key);
    public boolean contains(Key key);
    public void remove(Key key);
    public int size();
    public Iterator<Key> iterator();
}


黑名单过滤应用


代码

import java.util.Set;
import java.util.LinkedHashSet;
 
public class BlackList {
    public static void main(String[] argv) {
        String[] urls = new String[]{"baidu.com", "abc.com", "porn.com", "youtube.com", "facebook.com"};
        String[] blacklist = new String[]{"porn.com", "youtube.com", "facebook.com"};
 
        // 建立黑名单集合
        Set<String> black = new LinkedHashSet<String>();
        for(String b : blacklist) {
            black.add(b);
        }
 
        // 过滤非法网站
        for(String url : urls) {
            if(!black.contains(url)) {
                System.out.println(url);
            }
        }
    }
}


输出结果:

baidu.com
abc.com
porn.com is blocked
youtube.com is blocked
facebook.com is blocked


从输出结果中可以看出,一些非法网站被过滤了。