使用HashMap比较字符串

时间:2014-10-13 10:16:20

标签: java xml

我有几个这样的xml文件

<?xml version = "1.0"?>
<note>
<to>Tim</to>
<from>Joe</from>
<head>About Job</head>
</note>

<?xml version = "1.0"?>
<note>
<to>Tim</to>
<from>Joe</from>
<head>How are u?</head>
</note>

 <?xml version = "1.0"?>
<note>
<to>Marry</to>
<from>Pit</from>
<head>Welcome to home</head>
</note>

我解析这些文件并将数据存储到文本文件中,如下所示

FROM: 
   Tim
   Tim
   Pit
TO: 
   Joe
   Joe
   Marry
HEAD: 
   About Job
   How are u?
   Welcome to home

我希望这些名字不会重复 我如何用hasMap做到这一点,请帮助我! :)

4 个答案:

答案 0 :(得分:0)

如果您只需要一个唯一的名称集合,请使用HashSet<String>。每个唯一名称只存储一个实例。如果您希望每个唯一名称作为密钥,HashMap会有意义。在这种情况下,您必须确定要存储的内容作为每个名称键的值。

答案 1 :(得分:0)

从您的问题来看,您似乎只需要存储一组唯一对象。 Set的实施将有所帮助。您可以使用HashSetString个对象:

Set uniqueNames = new HashSet<String>()

答案 2 :(得分:0)

Set<String> from = new HashSet<String>();

您只需使用add方法添加新记录。请记住,集合不会保持已插入的女巫元素的顺序。但我想在你的例子中你会在打印前对名称进行排序,所以没关系。

如果你想保持迭代顺序,请使用LinkedHashSet。

答案 3 :(得分:0)

阅读文本文件并将其存储到HashSet之类的

Set names = new HashSet<String>();
names.put(nameString);

以上解决方案为case-sensitive - 这意味着Timtim将被区别对待。如果您正在寻找像"nameString".toLowerCase()这样的行为,请先使用HashSet将名称字符串转换为小写,然后再将其放入case-insensitive

names.put(nameString.toLowerCase());  \\now Tim and tim will be treated equally

希望这有帮助。