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

Java 可以维护插入顺序、过滤掉重复元素并轻松删除第一个元素的数据结构?,java,list,data-structures,set,Java,List,Data Structures,Set,我需要使用一个数据结构,它可以维护插入顺序,不存储任何重复项,并且可以轻松有效地从中删除第一个元素 public static LinkedHashSet<String> getData(TypeEnum flowType) { LinkedHashSet<String> listOfPaths = new LinkedHashSet<String>(); String prefix = flowType.equals(TypeEnum.PAR

我需要使用一个数据结构,它可以维护插入顺序,不存储任何重复项,并且可以轻松有效地从中删除第一个元素

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

可以使用迭代器获取第一个元素,并将其删除

String localpath=null;
迭代器itr=ListofPath.Iterator();
if(itr.hasNext()){
localpath=itr.next()
移除(本地路径);
}

是的,您只需执行
set.remove(set.iterator.next())。我的意思是,通过删除集合中的第一个元素来获取它。就像我对LinkedList解决方案所做的那样
String local_path=data.removeFirst()
在这种情况下,只需将字符串存储在变量(例如
s
)的itr.next()中,然后执行
listOfPaths.remove
。请在实际调用
itr.hasNext()之前添加对
itr.hasNext()
的检查
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
}