所以,我正在尝试创建有限的worker worker = new worker();
ThreadStart i2c_sender_ref = new ThreadStart(worker.i2c_worker);
Thread i2c_sender = new Thread(i2c_sender_ref);
i2c_sender.Start();
,因此每当HashSet
超过1024个元素时,它就会抛出LimitedHashSet
,不要问,说明。
到目前为止,这是我的代码,
Error
然而,没有任何反应。
答案 0 :(得分:4)
您永远不会实例化LimitedHashSetError
,因此您永远不会检查尺寸。我希望在每add(All)
之后调用一个check-method:
public class LimitedHashSet<E> extends HashSet<E>{
@Override
public boolean add(E e) {
boolean result = super.add(e);
checkSize();
return result;
}
@Override
public boolean addAll(Collection<? extends E> c) {
boolean result = super.addAll(c);
checkSize();
return result;
}
private void checkSize() {
if (size() > 1024){
throw new Error("LimitedHashSetError");
}
}
}
答案 1 :(得分:1)
你应该这样做:
@Override
public boolean add(E e) {
boolean x = super.add(e);
if (size() > 1024) {
throw new Error("Limited Hash Set Error");
}
return x;
}
@Override
public boolean addAll(Collection<? extends E> c) {
boolean x = super.addAll(c);
if (size() > 1024) {
throw new Error("LimitedHashSetError");
}
return x;
}
答案 2 :(得分:0)
您应该在班级中覆盖两个方法addAll
和add
:
@Override
public boolean addAll(final Collection<? extends E> c) {
boolean a = true;
for(final E e: c) {
a = a && add(e);
}
return a;
}
@Override
public boolean add(final E e) {
if (size() + 1 > 1024 && !contains(e)){
throw new Error("LimitedHashSetError");
}
return super.add(e);
}