Valores Repetidos no HashSet

Boas pessoal preciso de inserir valores num hashSet mas infelizmente ele ma aceita valores repetidos…

[code]
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
ArrayList arcos = new ArrayList();

	String[] data = new String[5];

	int n_cidades = in.nextInt();

	String cidade_partida = in.next();

	String cidade_chegada = in.next();

	int hora_chegada = in.nextInt();

	int numero_voos = in.nextInt();

	in.nextLine();

	
	HashSet<Vertice> one = new HashSet<Vertice>();
	
	Vertice v_inicial = new Vertice(cidade_partida, 0);
	Vertice v_final = new Vertice(cidade_chegada, hora_chegada + 30);

	
	vertices.add(v_inicial);
	vertices.add(v_inicial);

	for (int x = 0; x < numero_voos; x++) {

		data = in.nextLine().split(" ");
		Vertice v1 = new Vertice(data[0], Integer.parseInt(data[3]));

if(!one.Contains(v1)){
one.add(v1);
}

		}
	}

	

	System.out.println(vertices.toString());

}

public static void changeHour(Vertice aux) {

	if (String.valueOf(aux.gethora()).substring(2, 4).equals("60")) {
		// aux.setHour((x+1));
		aux.sethora(Integer.parseInt((String
				.valueOf((Integer.parseInt(String.valueOf(aux.gethora())
						.substring(0, 2)) + 1)) + "00")));
	}
}[/code]

o vertice é um objecto composto por uma string e um inteiro.

Vertice v  = new Vertice(string , int);

Olá

O HashSet foi feito justamente para não aceitar valores repetidos.
Use um List ou um Array para isso.

[quote=furutani]Olá

O HashSet foi feito justamente para não aceitar valores repetidos.
Use um List ou um Array para isso.[/quote]

ele esta justamente a aceitar valores repetidos…
eu sei disso , li a api…e ta me montado…

resolvido…

o segredo estava no equals, o hashSet para ver se o objecto esta repetido usa o equals(Object xpto) tempos de redefinir este metodo na classe que criamos para o nosso objecto mas com o parametro Objec, na comparação fazemos uma cast para o tipo do nosso objecto e kuando ele usar (HashSet) usa como deve ser…

aqui esta:

public boolean equals(Object o) { if (this.cidade.equals(((Vertice) o).getcidade()) && this.hora == ((Vertice) o).gethora()) { return true; } else return false; }

[quote=Alkamavo]resolvido…

o segredo estava no equals, o hashSet para ver se o objecto esta repetido usa o equals(Object xpto)

[/quote]

Não apenas do equals, mas no hashCode tb. (hashSet -> hashCode)

sobre-escreva hashCode tb.