Java字符串、集合键值对倒排索引

笔者的代码比较简洁,可移植性较好。

键值对就是一个集合到另一个集合的映射关系,一个键只能有一个唯一的值,但是不同的键可以映射到相同的值。
在Java语言中常用的键值对是Map,在本文中笔者以HashMap为例介绍倒排索引。

倒排索引,举个例子,比如一本书中,段落a在第1页,段落b在第2页,段落c也在第2页,要计算出第1页有段落a,第2页有段落b和段落c。
下面是倒排索引的代码

for(Set<String> s2:list.values())
        {
         for(String ss:s2)
         {
          if(!listt.containsKey(ss))
          {
           for(String sss:list.keySet())
           {
            if(list.get(sss).contains(ss))
            {
             list2t.add(sss);
            }
           }
           list5t=trans(list2t);
           listt.put(ss, list5t);
           list2t.clear();
          }
         }
        }

这里有一个小问题,就是map中每put一次就需要一个集合,实际上put是对地址的操作,不是复制集合中的内容,因此增加一个辅助函数就巧妙地解决了。
函数如下:

public static Set<String> trans(List<String> ss)
 {
  Set<String> s8=new HashSet<String>();
  for(String s:ss)
  {
   s8.add(s);
  }
  return s8;
 }

这样 倒排索引就完成了。

猜你喜欢

转载自blog.csdn.net/fengjinghanggreat/article/details/88552950