的大量好了,解释这个问题,问题...哪些数据结构,用来存储字符串
我:
充满了数以百万计的条目(一张大数据库表中的每个条目可具有“ n“列数量)。
的概念:(前“可用”和“选择”)
我想展现给一个网络接口两个列表。 当用户将条目从一个列表移动到另一个列表时,我需要将条目的unique-id(字符串类型)临时存储到我的服务器中名为“selected”的“未知数据结构”中,并且当用户最终点击提交我会将这个列表进一步传递给其他应用程序。
对数据库进行排序和筛选,然后将全部数据量(以块为单位)加载回java,然后检查每个条目是否被选中并将添加到将要去的列表中显示在Web界面中。
for each entry{
if(selected.contains(currentEntry.ID)){
selectedList.add(currentEntry)
}else{
availableList.add(currentEntry)
}
}
名单selectedList和availableList将只持有几百项(那些显示给用户,以最大100-200条目约页)这样一类的列表“项”是不够好,持有我的排序。
问题:
结构“selected”必须包含数以千计的ID(有时可能达到百万)。
需要:
我需要快速访问来查找id是否存在(structure.contains(id)),所以我肯定会使用散列结构。 我需要使用最小内存资源的结构。
非需要:
不需要良好的删除性能。排序是不需要的。
设置将是我认为最好的。 – 2013-04-26 12:23:06
如果它必须保存这么多的条目,你应该将它转储到数据库表中,并附加一个额外的ID(例如某种类型的会话标识) – 2013-04-26 15:20:22
经过大量测试后,我意识到所有的Hash结构(HashSet, LinkedHashMap等)执行大致相同。 TreeSet是我测试的性能较差的结构,需要最多的时间来查找和元素。 当我超过200.000个元素(当然,这与硬件等有关)时,我开始面临溢出到我的测试系统的问题。 我可能会去解决方案使用数据库表来保存选定的ID和直接从数据库使用连接获取数据(无论哪种方式我会使用数据库进行排序和过滤) 感谢您的帮助。 – Stef 2013-05-03 12:22:12