0

我想要一个性能良好的数据结构,它允许从一个结构轻松克隆/复制到另一个结构。我的流程如下所示:

  • list1,满载物件。
  • 遍历对象,从每个对象创建几个相同类型的对象,然后将它们添加到list2.
  • 从 中删除所有对象list1并将所有对象添加list2list1.
  • 从 中删除所有对象list2

在我使用的那一刻,我坚持选择一种数据结构,ArrayDeque这不是很快。对象的数量不是固定的,所以数组可能不是一个好的选择。请问有什么建议吗?这是我的代码:

ArrayDeque<Obj> list1 = new ArrayDeque(),
list2 = new ArrayDeque();

// Iterate over list1 
// and add() objects into list2 

list1 = list2.clone();
list2.clear();

谢谢 !

4

1 回答 1

-1

使用 1000 个对象,您不必太复杂,除非这对性能至关重要或创建每个类对象Obj是一个漫长的过程。

假设以下(非常点头)不可变Obj类:

public static final class Obj {
    private String property;

    public Obj(String property) {
        this.property = property;
    }

    public String getProperty() {
        return property;
    }

    public Obj modify(String newProperty) {
        return new Obj(property + newProperty);
    }
}

以下代码对 100k 个元素执行得非常快:

public static final int NUM_ELEMENTS = 100_000;

public static void main(String[] args) {
    //init
    ArrayDeque<Obj> source = new ArrayDeque<>(NUM_ELEMENTS);
    ArrayDeque<Obj> destination = new ArrayDeque<>(NUM_ELEMENTS);

    for(int i = 0; i < NUM_ELEMENTS; i++) {
        source.add(new Obj("" + i));
    }

    //modify
    source.stream()
            .map(obj -> obj.modify(" V2"))
            .forEach(obj -> destination.add(obj));

    source.clear();

    //print
    destination.stream()
            .forEach(obj -> System.out.println(obj.getProperty()));
}
于 2019-08-28T16:42:53.747 回答