当前位置: 首页 > 知识库问答 >
问题:

能够保持插入顺序、过滤掉重复元素并轻松移除第一个元素的数据结构?

夏和雅
2023-03-14

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

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方法返回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
}

共有1个答案

贲铭
2023-03-14

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

js prettyprint-override">    String localpath = null;
    Iterator itr = listOfPaths.iterator(); 
    if(itr.hasNext()){
      localpath = itr.next()
      listOfPaths.remove(localpath);
    }
 类似资料:
  • 问题 怎样在一个序列上面保持元素顺序的同时消除重复的值? 解决方案 如果序列上的值都是 hashable 类型,那么可以很简单的利用集合或者生成器来解决这个问题。比如: def dedupe(items): seen = set() for item in items: if item not in seen: yield item

  • 如何移除第一个数组但返回减去第一个元素的数组 在我的示例中,当删除第一个元素时,我应该得到

  • 问题内容: 我正在尝试创建一个OrderedDict对象,但我不会立即创建它,否则所有元素都会混乱。 这是我的工作: 元素不按我分配的顺序排列 docs.python.org没有示例,我无法弄清楚订单为何变得混乱。任何帮助是极大的赞赏。 问题答案: 您的问题是,您正在构造一个将初始数据提供给的-这 不会 存储任何订单,因此订单在到达之前就丢失了。 解决方案是从有序数据类型构建-最简单的是的: 值得

  • 我有一个有重复项的有序列表(比较相等的对象),我想删除重复项。因为我想维持秩序,所以无法使用。 我的列表中的重复项不会一个接一个地出现,我希望保留最后出现的项。在这篇相关的文章中,似乎只保留了第一次出现的重复。 作为我简化的例子,这是我想要的: 我唯一能想到的是一个混乱的实现,使用多次迭代首先保存每个副本的最后一次出现,然后使用最后出现的副本的顺序重新创建原始列表。

  • 问题内容: 我有一个家庭作业,需要在以下条件下插入或添加新元素: 元素必须 升序 。 中没有重复的 元素 insert方法运行 O(n) 次。 这是我在添加新元素之前检查重复元素的插入方法。 我该怎么做?谢谢。 加成 这是我的班级名称InSetExtra 我需要插入大尺寸的元素,例如: 我该怎么办? ps。我的教练只需要使用ArrayList 问题答案: 这是我的处理方式:(注释中的解释) 您发布

  • 我正试图按排序的顺序将一个元素添加到数组中。 5、6、7、9、11、0