Java 从多集删除
因此,我的任务是创建一个方法,从多重集合中删除一个元素。我已经试了一段时间了,但遗憾的是没有成功。我的代码如下:Java 从多集删除,java,Java,因此,我的任务是创建一个方法,从多重集合中删除一个元素。我已经试了一段时间了,但遗憾的是没有成功。我的代码如下: import java.util.*; public class MultiSet<E> extends AbstractCollection<E> { private HashMap<E, Integer> elements; private int noOfElems; public MultiSet() { elements =
import java.util.*;
public class MultiSet<E> extends AbstractCollection<E> {
private HashMap<E, Integer> elements;
private int noOfElems;
public MultiSet() {
elements = new HashMap<E, Integer>();
noOfElems= 0;
}
public MultiSet(Collection<E> c) {
this();
addAll(c);
}
public int size() {
return noOfElems;
}
public Iterator<E> iterator() {
return new Iterator<E>() {
Iterator<E> iterator = elements.keySet().iterator();
int elemsLeft = 0;
E thisElem = null;
public boolean hasNext() {
return iterator.hasNext();
}
public E next() {
if (elemsLeft == 0) {
thisElem = iterator.next();
elemsLeft = elements.get(thisElem);
}
elemsLeft -= elemsLeft;
return null;
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
public boolean add(E e) {
Integer i = elements.get(e);
if(i == null) {
i = 1;
} else {
i += 1;
}
elements.put(e, i);
noOfElems++;
return true;
}
public String toString() {
return elements.toString();
}
public int hashCode() {
return elements.hashCode();
}
public boolean equals(MultiSet<E> other) {
if (this == other) {
return true;
}
if (other == null) {
return false;
}
if (this.getClass() != other.getClass()) {
return false;
}
MultiSet<?> obj = (MultiSet<?>) other;
return obj.elements.equals(elements);
}
public boolean remove(Object o) {
}
}
我想实现remove方法。任何能帮助我的东西,即使是一些关于从哪里开始的建议,都将不胜感激。谢谢此外,对我的代码的其余部分的注释也将得到赞赏此多集仅将元素存储为映射到出现次数计数的哈希键。要删除元素的所有实例,只需删除键:
public void remove_all(E e) {
elements.remove(e);
}
如果只需要删除一个实例,则减少计数,除非它已经是1。在这种情况下,请拔下钥匙
public void remove(E e) {
Integer i = elements.get(e);
if (i != null) {
if (i == 1) {
elements.remove(e);
} else {
elements.put(e, i - 1);
}
}
}
顺便说一句,很难相信这是你的代码。如果您对已经编写的方法有足够的了解,那么您怎么可能连从何处开始删除都不知道呢