Java链接哈希映射

Java链接哈希映射,java,Java,我有一段简单的代码,其中一个arraylist将被传递到一个哈希映射,以删除重复的记录,并将所有记录添加回同一个araylist: ArrayList<String> masterRecords = new ArrayList<String>(); String perLine; // Read file per line while ((perLine = br.readLine()) != null) { masterRecords.add(perLine)

我有一段简单的代码,其中一个arraylist将被传递到一个哈希映射,以删除重复的记录,并将所有记录添加回同一个araylist:

ArrayList<String> masterRecords = new ArrayList<String>();

String perLine;
// Read file per line
while ((perLine = br.readLine()) != null) {
    masterRecords.add(perLine);
}

br.close();

// Remove duplicates using hash map
HashSet<String> uniqueRecords = new HashSet<String>();
uniqueRecords.addAll(masterRecords);
masterRecords.clear();
masterRecords.addAll(uniqueRecords);

问题是所有记录的顺序都不相同,我想保留它们之前的排序方式,我读到使用链接哈希映射可以做同样的事情(删除重复),同时保留记录的顺序。我似乎找不到一个好的例子来说明如何做到这一点。任何人都可以给我举一个例子,或者举一个基本的例子来说明如何做到这一点?谢谢

首先,
HashSet
不是一个
HashMap
。而且,你可以用一个

Set uniquerycords=newlinkedhashset();
从链接的Javadoc

此实现与HashSet的不同之处在于,它维护一个贯穿其所有条目的双链接列表。此链表定义了迭代顺序,即元素插入到集合中的顺序(插入顺序)


因为您只是使用字符串的哈希集,所以只需用LinkedHashSet替换哈希集即可。它支持与保序行为相同的行为。这一点在以下文件中有明确说明:

哈希表和链表的集合接口的实现,用 可预测的迭代顺序。此实现不同于HashSet 因为它维护了一个贯穿其所有应用程序的双链接列表 条目。此链表定义迭代顺序,即 元素插入到集合中的顺序(插入顺序)。 请注意,如果重新插入图元,则插入顺序不受影响 进入布景

/EON_2,-,EON_2,9R25M_ROADM_001,OCH-L-1-1-1-68,OPT-F,PMTypeOptical,NEND,TDTC,15-MIN,Dec 08 2014  - 10:30:00 PM MYT,NA,NA
Set<String> uniqueRecords = new LinkedHashSet<>();