I have a simple class called Stock the code is listed below, and I my requirement is to create a Collection of Stock where the combination of the fields StockId, Code and name should be unique, I am doing this by implementing my own list class. I was wondering if there is any better way to do this
public class Stock {
    private Integer stockId;
    private String stockCode;
    private String stockName;
    public Stock() {
    }
    public Stock(Integer stockId,String stockCode, String stockName) {
        this.stockCode = stockCode;
        this.stockName = stockName;
    }
    public Integer getStockId() {
        return this.stockId;
    }
    public void setStockId(Integer stockId) {
        this.stockId = stockId;
    }
    public String getStockCode() {
        return this.stockCode;
    }
    public void setStockCode(String stockCode) {
        this.stockCode = stockCode;
    }
    public String getStockName() {
        return this.stockName;
    }
    public void setStockName(String stockName) {
        this.stockName = stockName;
    }
}
List class
public class StockList {
    private List<Stock> listStock;
    public StockList(){
        listStock =  new ArrayList<Stock>();
    }
    public void add(Stock stock){
        boolean result=true;
        for(Stock st:listStock){
            int count=0;
            if(st.getStockId()==stock.getStockId()){
                count++;
            }
            if(st.getStockCode()==stock.getStockCode()){
                count++;
            }
            if(st.getStockName()==stock.getStockName()){
                count++;
            }
            if(count>=3){
                result=false;
                break;
            }
        }
        if(result) {
            listStock.add(stock);
        }
    }
    public List<Stock> getList(){
        return listStock;
    }
}
I have even tried the Hashset per instructions but it still let me add two Stock objects with same values in every field
import java.util.HashSet;
import java.util.Set;
public class Stock {
    private Integer stockId;
    private String stockCode;
    private String stockName;
    public Stock() {
    }
    public Stock(Integer stockId,String stockCode, String stockName) {
        this.stockCode = stockCode;
        this.stockName = stockName;
    }
    public Integer getStockId() {
        return this.stockId;
    }
    public void setStockId(Integer stockId) {
        this.stockId = stockId;
    }
    public String getStockCode() {
        return this.stockCode;
    }
    public void setStockCode(String stockCode) {
        this.stockCode = stockCode;
    }
    public String getStockName() {
        return this.stockName;
    }
    public void setStockName(String stockName) {
        this.stockName = stockName;
    }
    public int hashCode() {
        final int PRIME = 31;
        int result = 1;
        result = PRIME * result + stockId+stockCode.hashCode()+stockName.hashCode();
        return result;
    }
    public boolean equals(Object obj) {
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        final Stock other = (Stock) obj;
        int count=0;
        if (stockId == other.stockId){
            count++;
        }
        if(stockCode.equalsIgnoreCase(other.stockCode)){
            count++;
        }
        if(stockName.equalsIgnoreCase(other.stockName)){
            count++;
        }
        if(count<3) {
            return true;
        }
    return false;
    }
}
 
     
    