Java ArrayList.size()和Set.size()之间存在差异
我有一个结果集,有1605条记录。当我将结果集添加到arrayList时,得到的大小是1605,而当我将结果集添加到HashSet数据结构时,它打印的大小是1598。我不知道为什么会有这种差异Java ArrayList.size()和Set.size()之间存在差异,java,arraylist,set,Java,Arraylist,Set,我有一个结果集,有1605条记录。当我将结果集添加到arrayList时,得到的大小是1605,而当我将结果集添加到HashSet数据结构时,它打印的大小是1598。我不知道为什么会有这种差异 Set<String> list_of_genes_strain_1 = new HashSet<>(); ArrayList<String> list_of_genes = new ArrayList<>(); // Loop th
Set<String> list_of_genes_strain_1 = new HashSet<>();
ArrayList<String> list_of_genes = new ArrayList<>();
// Loop through result sets
while(gene_strain_1.next()){
String gene_name = gene_strain_1.getString(1);
list_of_genes_strain_1.add(gene_name); // add to set
list_of_genes.add(gene_name); // add to arrayList
}
System.out.println("list_of_genes for strain 1: " + list_of_genes.size());
System.out.println("SET genes for strain 1 :" + list_of_genes_strain_1.size());
HashSet是一个集合,这意味着它不允许存储重复项。这是java中集合的定义。因此,您的列表可能有重复项,这些重复项在添加到HashSet时会被删除,从而产生差异
以下是在中定义的集合的定义,请查看以了解更多信息
不包含重复元素的集合。更正式地说,设置
不包含元素e1和e2对,因此e1.Equals2和at
大多数情况下只有一个空元素。正如其名称所暗示的那样,该接口建模
数学集合抽象
集合排除重复项,因此集合只包含唯一的项。在哈希集合中,您可以注意到有一个重复项。在这种情况下,具有相同内容的字符串,包含的所有项都是唯一的,而在列表中,您可以有多个具有相同值的字符串 可以肯定的是,在结果集gene_strain_1中存在重复项。因此,它们将仅在第一次出现时添加到集合中,而不会在第二次、第三次等出现时添加到集合中,同时它们将始终添加到列表中。事实上,该列表包含的项目数量与原来的1605项相同,而HashSet仅包含1598项 听起来奇怪的是,你说你的目标基因1是一个结果集,也就是说已经是一个集合了,它本来不应该包含重复的项目
你确定基因1是一个集合吗?这可能是因为你的结果集中很少有重复的单词 假设你有
One
Two
Three
One
有4个项目。在数组中,您将有4项,但在hashmap中,您将有3项,因为它通过key/value保存值。如果已经有一个键,它将替换以前的值。set只存储唯一的元素!!!谢谢,我以为我的结果集中有唯一的基因,但你是对的。是的,基因1是数据库查询的结果集对象。
One
Two
Three
One