可以维护插入顺序,过滤掉重复元素并轻松删除第一个元素的数据结构?
Data Structure which can maintain insertion order, filter out duplicate elements and easily remove first element?
我需要使用一个数据结构来维护插入顺序,不存储任何重复项,并且我可以轻松有效地从中删除第一个元素。
public static LinkedHashSet<String> getData(TypeEnum flowType) {
LinkedHashSet<String> listOfPaths = new LinkedHashSet<String>();
String prefix = flowType.equals(TypeEnum.PARTIAL) ? TypeEnum.PARTIAL.value() : TypeEnum.UNPARTIAL.value();
listOfPaths.add(prefix + LOCAL_PATH); // first element in the list is always LOCAL PATH
for (String path : REMOTE_PATH) {
listOfPaths.add(prefix + path);
}
return listOfPaths;
}
早些时候,我使用的是 LinkedList,我可以使用 removeFirst()
方法从中轻松删除第一个元素,它还保持插入顺序,但它可以存储我不想要的重复元素。
我可以通过使用上述解决方案从 LinkedHashSet 中删除第一个元素来轻松获取第一个元素吗?
我可以在这里选择哪些有效的选项?
下面是我在 getData
方法 returns LinkedList
中使用的方法,但它不会过滤掉重复项。
LinkedList<String> data = getData(flowType);
String local_path = data.removeFirst(); // this is my local path
// use local_path here
// now iterate all the remote path
for(String remotePath : data) {
// do something with remotePath
}
您可以使用迭代器获取第一个元素,然后将其删除。
String localpath = null;
Iterator itr = listOfPaths.iterator();
if(itr.hasNext()){
localpath = itr.next()
listOfPaths.remove(localpath);
}
我需要使用一个数据结构来维护插入顺序,不存储任何重复项,并且我可以轻松有效地从中删除第一个元素。
public static LinkedHashSet<String> getData(TypeEnum flowType) {
LinkedHashSet<String> listOfPaths = new LinkedHashSet<String>();
String prefix = flowType.equals(TypeEnum.PARTIAL) ? TypeEnum.PARTIAL.value() : TypeEnum.UNPARTIAL.value();
listOfPaths.add(prefix + LOCAL_PATH); // first element in the list is always LOCAL PATH
for (String path : REMOTE_PATH) {
listOfPaths.add(prefix + path);
}
return listOfPaths;
}
早些时候,我使用的是 LinkedList,我可以使用 removeFirst()
方法从中轻松删除第一个元素,它还保持插入顺序,但它可以存储我不想要的重复元素。
我可以通过使用上述解决方案从 LinkedHashSet 中删除第一个元素来轻松获取第一个元素吗?
我可以在这里选择哪些有效的选项?
下面是我在 getData
方法 returns LinkedList
中使用的方法,但它不会过滤掉重复项。
LinkedList<String> data = getData(flowType);
String local_path = data.removeFirst(); // this is my local path
// use local_path here
// now iterate all the remote path
for(String remotePath : data) {
// do something with remotePath
}
您可以使用迭代器获取第一个元素,然后将其删除。
String localpath = null;
Iterator itr = listOfPaths.iterator();
if(itr.hasNext()){
localpath = itr.next()
listOfPaths.remove(localpath);
}