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;
 }

这样 倒排索引就完成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值