gpt4 book ai didi

java - HashSet 等于无法正常工作

转载 作者:行者123 更新时间:2023-12-02 12:11:12 24 4
gpt4 key购买 nike

我正在测试一个更复杂的任务,其中可能有重复的元素,我想避免使用 HashSet。

<小时/>

我编写了以下使用 getAllEmpresas() 的代码,Empresa 或 Organization 是 DAOJson 检索的更复杂的结构,但我只对这些组织的名称感兴趣...

   public class TestListaDeNombresDeEmpresas {

RepositorioDeEmpresas repo ;
HashSet<String> nombresDeEmpresas ;
List<Empresa> empresas ;

public TestListaDeNombresDeEmpresas () throws IOException
{
DAOJsonEmpresa dao = new DAOJsonEmpresa() ;
repo = RepositorioDeEmpresas.getInstance(dao) ;
empresas = repo.getAllEmpresas() ;
nombresDeEmpresas = new HashSet<String>();
fillHashSet();

}

public static void main (String [] args) throws IOException
{
TestListaDeNombresDeEmpresas test = new TestListaDeNombresDeEmpresas() ;
System.out.println("Imprimiendo lista de empresas");
test.imprimirListEmpresas();
test.fillHashSet();
System.out.println();
test.hashSetContainsFirstElement();
System.out.println("imprimiendo hash...");
test.imprimirHashNombresEmpresas();
}

public void fillHashSet() {

List<String> nombresDeEmpresasAux = empresas.stream()
.map(e -> e.getName()).collect(Collectors.toList()) ;

nombresDeEmpresasAux.forEach(e -> nombresDeEmpresas.add(e));

}

public void hashSetContainsFirstElement()
{
List<String> nombresDeEmpresasAux = empresas.stream()
.map(e -> e.getName()).collect(Collectors.toList()) ;

System.out.printf("Contiene el hash de empresas el nombre %s? : %s\n",
nombresDeEmpresasAux.get(0),nombresDeEmpresas
.contains( nombresDeEmpresasAux.indexOf(0) ) );
System.out.println();
}

public void imprimirHashNombresEmpresas()
{
nombresDeEmpresas.forEach(System.out::println);
}

public void imprimirListEmpresas()
{
empresas.forEach(e -> System.out.println( e.getName() ) ) ;
}
}

问题是当我运行时

public void hashSetContainsFirstElement()
{
List<String> nombresDeEmpresasAux = empresas.stream()
.map(e -> e.getName()).collect(Collectors.toList()) ;

System.out.printf("Contiene el hash de empresas el nombre %s? : %s\n",
nombresDeEmpresasAux.get(0),nombresDeEmpresas
.contains( nombresDeEmpresasAux.indexOf(0) ) );
}

它打印的是 false,这没有任何意义,实际上程序的输出是......

    Imprimiendo lista de empresas
Nike
Facebook
Dolce&Gabbana
Twitter
Snapchat
YouTube

Contiene el hash de empresas el nombre Nike? : false

imprimiendo hash...
Nike
Dolce&Gabbana
Twitter
Facebook
YouTube
Snapchat

这清楚地表明 HashSet nombresDeEmpresas 实际上包含名称“Nike”...为什么会发生此错误以及如何修复它?

最佳答案

在你的行中:

System.out.printf("Contiene el hash de empresas el nombre %s? : %s\n", 
nombresDeEmpresasAux.get(0),nombresDeEmpresas
.contains( nombresDeEmpresasAux.indexOf(0) ) );

您想使用 nombresDeEmpresasAux.get(0) 而不是 nombresDeEmpresasAux.indexOf(0) 吗?

关于java - HashSet 等于无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46537252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com