Я создал объекты HashSet of Console, которые используют 2 строки. Один для названия компании для консоли, другой - имя консоли. У меня нет проблем с большинством основных методов (я знаю, как добавить к HashSet, очистить HashSet и т. Д.), Но у меня возникают проблемы с удалением одного объекта и с проверкой, содержит ли HashSet определенный объект , Я включил соответствующие фрагменты кода для класса HashSetПроблемы с объектами в HashSet
import java.util.HashSet;
public class testHashSet
{
private HashSet <Console> testSet;
/**
* Constructor
*/
public testHashSet()
{
testSet = new HashSet <Console>() ;
setTestSet();
}
public void setTestSet(){
testSet.add(new Console("Nintendo" , "Wii U"));
testSet.add(new Console("Sony" , "PS4"));
testSet.add(new Console("XBox" , "Microsoft"));
}
/**
* Method to remove object from HashSet
*/
public void removeData(){
Console d = new Console("Sony" , "PS4");
testSet.remove(d);
printHashSet();
}
/**
* Method to check for specific object in HashSet
*/
public void checkForItem(String anyCompany, String anyConsole){
boolean exist = testSet.contains(new Console (anyCompany, anyConsole));
System.out.println(exist);
}
Edit: Вот исходный код класса Console:
public class Console
{
private String companyName;
private String consoleName;
/**
* Constructor for objects of class Console
*/
public Console(String anyCompany, String anyConsole)
{
companyName = companyName;
consoleName = anyConsole;
}
public void printConsoleInfo(){
System.out.println(consoleName + " is a " + companyName + " console.");
}
}
Ваш класс консоли, вероятно, не переопределяет 'hashCode' и' equals'. – Misha
Действительно - не видя кода для 'Console', мы не можем сказать, что случилось. Но да, это почти наверняка не отменяет «hashCode» и «равно» соответственно. –
Хорошо, я просто добавил код. –