Map <String,List<String>>
例如:
Home : doc1,doc2,doc3
现在我想进行位置索引,将单词存储为key
,这次不仅存储文件名,而且文件名和#of时间单词出现在文件中,并显示在文件中的位置
<fname,freq,postion1,position2,position3>
例如:
java : doc1,3,4,8,30
java在doc1中出现3次,位置4 8 30 所以我谷歌如何做这样的事情
我发现了Tuple class
,所以我的hashMap
就像
public Map <String,List<Tuple>> positionIn=new HashMap<>();
和我的Tuple class
public class Tuple {
private String filepath;
private int wordfreq;
private List <Integer> position;
private Tuple(String filepath, int wordfreq,List position) {
this.filepath = filepath;
this.wordfreq=wordfreq;
this.position = position;
}
public List<Integer> getPosition(){return position; }
public String getfilePath(){return filepath;}
public int getfreq(){return wordfreq;}
@Override
private boolean equals(Object o) {
if (!(o instanceof Tuple)) return false;
Tuple t = (Tuple) o;
return this.filepath.equals(t.fname());
}
}
我的问题是:
如何处理这个元组列表例如
列表中的contains方法是正确的
list.contains(fname)
或list.contains(position)
以及如何分别获取其元素?
答案 0 :(得分:0)
根据评论中的要求,我将此作为答案添加:
您希望能够通过以下方式区分元组:
因此你的equals方法也应该比较两个列表。这可以通过list1.containsAll(list2)
&amp;&amp; list2.containsAll(list1)
。
对于list.contains(x)
,您需要x
成为Tuple
的实例,因为list
的类型为List<Tuple>
。
因此,为了确定您的列表是否包含“/my/path/myFile.txt”,您需要list.contains(new Tuple("/my/path/myFile.txt", 0, null))