2010-09-08 150 views
3

我已经能够将四列文本文件读入哈希映射,并让它写入输出文件。但是,我需要将第二列(不同的值)获取到一个哈希集并写入输出文件。我已经能够创建哈希集,但它抓住了一切,而不是排序。顺便说一下,我是新手,所以请您在回答时考虑这一点。谢谢帮助需要从哈希映射创建哈希集

+0

你能说清一下与Javascript的关系是什么吗?考虑到类名,我假设你真的在谈论Java。 – 2010-09-08 14:31:06

+0

为什么“javascript”标记? – Bozho 2010-09-08 14:31:18

+0

显然,我是唯一一个足够大胆的人,只是继续前进,并删除标签。 :) – 2010-09-08 14:32:14

回答

4

HashSetHashMap都不是意思是来排序。它们基本上是未排序的数据结构。您应该使用SortedSet的实现,例如TreeSet

+0

+1是正确的(从技术上讲,在我现在删除的答案前35秒) – 2010-09-08 14:36:08

+0

我已经实现了一个treeset,但我仍然得到了一切,并且这种排序似乎没有发生。我认为我的树集或实现的位置可能是问题。下面是我如何使用它的示例。 – user442471 2010-09-08 15:27:45

+0

@ user442471:编辑您的*问题*以显示代码。 – 2010-09-08 15:31:36

1

有猜测,与先生长柄水杓答案,你明显的混乱......

你确定你是不是插入全线在TreeSet中?如果仅打算使用第二列,则需要将字符串(表示行)分割()成列 - 这不是自动完成的。另外,如果实际上尝试使用第二列作为关键字对整个文件进行排序,您需要改为使用第二列作为关键字,并使用第二列作为关键字,并将整行作为数据。但那不会解决分裂问题,只能保持线条和关键之间的关系。

编辑:这里有一些术语,你可能需要它。

您有Set。它是其他对象的集合 - 例如String。你可以使用add其他对象,然后你可以通过设置iterating来获取其中的所有对象。通过方法add()完成添加,并且可以使用增强的for loop语法或使用iterator()方法来完成迭代。

设置不“抢”或“拿”的东西;您add东西的集合 - 在这种情况下String - 不是字符串数组,它被写为String[]

(它显然可以阵列添加到一个TreeSet(它们是对象也是如此),但为了不相关该字符串的内容。也许这是你在做什么。)

String key = splittedLine[1]; // 2:nd element 

“键的第二个元素”没有任何意义可言。什么是你正在谈论的重复。 (注意正确使用撇号...... :-)

+0

我正在分割字符串,只取第二个元素。看来,当我使用treeset它正在采取每个关键的第二个元素。我认为这就是我看到重复的原因。我真的只想要一次价值。正如你所说,它保持了线条和关键之间的关系。这就是我如何分裂。 Pattern p = Pattern.compile(“[\\ s] +”); \t String [] str = p.split(strLine); – user442471 2010-09-08 17:33:40

+0

@ user442471:你说的话没有意义......编辑你的问题以显示代码,我们将尝试解释发生了什么。 – KarlP 2010-09-08 18:27:19