是否有任何java容器有两个方法,add,remove,只接受元素(而不是索引)?
我想做这样的事情:
MagicContainer<Foo> mc = MagicContainer<Foo>();
mc.add(new Foo());
mc.add(someFoo1=new Foo());
mc.add(new Foo());
mc.add(someFoo2=new Foo());
mc.remove(someFoo1);
mc.remove(someFoo2);
最佳答案
每个 Java Collection
有一个 add()
和一个remove()
做你想做的事情的方法。
由于 Collection
是一个接口(interface),因此您需要选择其中一种实现(通常也是 Set
或 List
实现)。 ArrayList
是一个非常常见的选择。
一个HashSet
是另一个可能的候选人。
Colllection<Foo> mc = new ArrayList<Foo>();
mc.add(new Foo());
mc.add(someFoo1=new Foo());
mc.add(new Foo());
mc.add(someFoo2=new Foo());
mc.remove(someFoo1);
mc.remove(someFoo2);
您想要哪种具体实现,将取决于您想要的其他属性。
如果您想保持定义的顺序并通过索引访问对象,那么您将需要一个 List
实现。 “默认”List
是 ArrayList
。如果您经常在除了末尾的任何位置删除/添加元素,那么LinkedList
将提供更好的性能(但大多数时候您不会注意到差异)。
如果您想避免重复的对象,那么您将需要一个 Set
实现。 “默认”Set
是 HashSet
,但是 TreeSet
偶尔也会使用,提供定义顺序的额外好处(但它要求您提供 Comparator
或确保所有元素都是 Comparable
)。
关于java - 在不知道元素索引的情况下,我可以更轻松地从哪个java容器中删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5260528/