Я согласен с GhostCat , что вы не должны добавлять m_
к переменным-членам.
Но что более важно, вы должны прекратить изобретать велосипед.
Рассмотрим
public boolean containsNumber(long number) {
return numbers.contains(number);
}
Затем, с
public void removeString(String str) {
for(int i = 0; i < strings.size(); i++) {
if(strings.get(i).equals(str)) {
strings.remove(i);
}
}
}
есть проблема в том, что при удалении элемента с индексом i
последующие индексы сдвигаются на один, поэтому вы пропускаете вхождение после только что удаленного. С другой стороны, если вы думаете об использовании HashSet
вместо этого, вы, возможно, не захотите поддерживать дублирующиеся элементы, и в этом случае вы можете остановиться после первого вхождения. Вы получаете все бесплатно, если не реализуете это самостоятельно.
public void removeString(String str) {
strings.remove(str);
}
удалит первый элемент (или только элемент, если вы не поддерживаете дубликаты)
public void removeString(String str) {
strings.removeAll(Collections.singleton(str));
}
удалит все вхождения str
правильно.
Возможна ли замена List
на Set
, например HashSet
, зависит от того, как вы собираетесь использовать данные, так как эти типы сбора имеют разную семантику. Поскольку вы вообще не используете данные в показанном коде, мы ничего не можем сказать по этому поводу.
Когда вы реализуете метод equals
, у вас также должен быть согласованный метод hashCode
@Override
public int hashCode() {
return 1+name.hashCode();
}
@Override
public boolean equals(Object obj) {
return obj instanceof SomeClass && name.equals(((SomeClass)obj).name);
}