gpt4 book ai didi

java - 大多数委托(delegate)给类成员的集合实现

转载 作者:行者123 更新时间:2023-11-30 02:44:25 26 4
gpt4 key购买 nike

我想实现一个Collection来表示已排序的项目集合。我需要一个特殊的 Collection 而不是仅仅在列表上调用 sort() 的主要原因是我需要 add() 的特定行为提高性能的方法。 Collection 的其余部分将主要委托(delegate)给类成员,可能是 ArrayList

有没有办法将部分Collection接口(interface)委托(delegate)给我的类成员,而不必像这样手动编写所有委托(delegate)?

public void clear() {
myList.clear();
}

public int hashCode() {
return myList.hashCode()
}

...

最佳答案

正如 Eran 所提到的,您可以扩展 ArrayList 以及将元素添加到底层集合的方法。

但是,正如 Spotted 在下面的评论中提到的,这会引入一些不必要的方法。

您可以做的是继承 AbstractCollection 类并将调用委托(delegate)给内部类。

一个例子:

import java.util.AbstractCollection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Collection;

public class MyCustomCollection<E> extends AbstractCollection<E> {

private Collection<E> delegate = new ArrayList<E>();

private void myCustomBehaviour() {
// TODO: Implement.
}

public int size() {
return this.delegate.size();
}

public Iterator<E> iterator() {
return delegate.iterator();
}

@Override
public boolean add(E e) {
myCustomBehaviour();

return delegate.add(e);
}
}

上面的解决方案比使用 ArrayList 更清晰,因为除了 Collection 接口(interface)中指定的功能之外,我们对任何东西都不感兴趣。

AbstractCollection 是 Collection 接口(interface)的部分实现,该接口(interface)有多个。其中一些是 HashSet、HashMap、LinkedList 等等。

关于java - 大多数委托(delegate)给类成员的集合实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40630273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com