可以维护插入顺序,过滤掉重复元素并轻松删除第一个元素的数据结构?

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);
    }