让一个Integer指向Java中的3个有序列表

时间:2010-03-08 20:18:13

标签: java sorting merge data-structures

您将在X的位置使用哪种数据结构进行有效的合并,排序和添加,如下所述?

#1可能的解决方案:一个HashMap到X -datastructure

将HashMap从fileID指向链接wordwordCountwordID的某个数据结构可能是一个很好的解决方案。但是,我还没有找到实现它的方法。


我不允许使用Postgres或任何类似的工具来保持我的数据被中和。 我希望根据fileIDwordIDwordCount对下面的类型进行有效的合并,排序和添加


我的类型为Words,其字段fileID指向单词列表和相关信息:

类型

class Words
===================================
fileID: int 
[list of words] : ArrayList
[list of wordCounts] : ArrayList
[list of wordIDs] : ArrayList

中的数据示例
fileID   word   wordCount   wordID
      instance1 of words
1        He     123         1111
1        llo    321         2
      instance2 of words
2        Van    213         666
2        cou    777         932

需要合并的示例

fileID     wordID                 fileID     wordID
1          2
1          3           wordID=2
2          2           ========>  1          2
2          3                      2          2 

我在这里看不到intersections等集合操作的使用情况,因为需要订购。

大约有三个HashMaps使排序变得困难:

  1. 从给定word
  2. 中的wordIDfileID
  3. wordIDfileID
  4. 从给定wordID
  5. 中的wordCountfileID

1 个答案:

答案 0 :(得分:3)

为什么不使用类将单词,单词计数和单词ID存储在一起?然后,您需要为每个fileID提供一个列表。这将使IMO至少简化操作。

class Word {
    private String text;
    private long count;
    private long id;
    // getters, setters
}

class Words {
    private int fileID;
    private List<Word> words;
    // getters, setters
}

这将是骨架,它已经自动解析了您的映射3.然后您可以将所需的其他映射添加到Words和/或Word

我不明白你的描述,同一个词是否总是有相同的wordID,或者它在不同的文件中是否有不同的ID;没有这个,我无法继续推进设计理念。但我希望到目前为止这可以帮助你克服僵局: - )