我只知道LinkedHashSet插入时不允许重复的元素。但是,我不了解Hashset在Hava中如何工作?我知道哈希表中使用了哈希表,因此哈希表用于存储元素,这里也不允许重复的元素。然后,Treeset也类似于Hashset,它也不允许重复的条目,因此将看到唯一的元素,并且遵循升序。
关于HashMap,我还有一个疑问-
Hashmap不维护顺序。它可能具有一个null键和多个null值。我只是不明白这一点,这实际上意味着什么?有什么实际的例子吗?
我知道一点,Hashmap曾经基于此工作-
用于存储桶的键和值也具有唯一编号。这样就可以识别并从存储桶中获取键和值。当我将键/值对放在标识符为键的哈希码的存储桶中时。
例如:密钥的哈希码为101,因此将其存储在存储桶101中。一个存储桶可以存储多于键和值对。假设举个例子,对象1是“ A”,对象2是“ A”,对象3是“
B”,那么它具有相同的哈希码。因此,它通过在同一存储桶中共享相同的哈希码来存储不同的对象。我的疑问是,具有相同哈希码的对象应该相等,而不同对象应该具有不同的哈希码?
这是使用HashSet的程序:
import java.util.*;
public class Simple{
public static void main(String[] args){
HashSet hh=new HashSet();
hh.add("D");
hh.add("A");
hh.add("B");
hh.add("C");
hh.add("a");
System.out.println("Checking the size is:"+hh.size()+"");
System.out.println(hh);
Iterator i=hh.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
}
输出是
Checking the size is:5
[D, A, B, a, C]
D
A
B
a
C
我的疑问是,为什么在“ B”和“ C”之间插入“ a”。
现在,我正在使用LinkedHashSet,
public class Simple{
public static void main(String[] args){
LinkedHashSet hh=new LinkedHashSet();
hh.add("D");
hh.add("A");
hh.add("B");
hh.add("C");
hh.add("a");
System.out.println("Checking the size is:"+hh.size()+"");
System.out.println(hh);
Iterator i=hh.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
}
我只是理解,它遵循插入顺序,并且避免了重复的元素。所以输出是
Checking the size is:5
[D, A, B, C, a]
D
A
B
C
a
现在,使用树集:
import java.util.*;
public class Simple{
public static void main(String[] args){
TreeSet hh=new TreeSet();
hh.add("1");
hh.add("5");
hh.add("3");
hh.add("5");
hh.add("2");
hh.add("7");
System.out.println("Checking the size is:"+hh.size()+"");
System.out.println(hh);
Iterator i=hh.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}
}
在这里,我只知道-树集遵循升序。
The output is,
Checking the size is:5
[1, 2, 3, 5, 7]
1
2
3
5
7
然后我的疑问是,哈希集如何在Java中工作?而且我知道LinkedHashset遵循双重链表。如果它使用双向链表,那么它将如何存储元素?双向链表是什么意思,它是如何工作的?那么在Java中将使用这三个Hashset,Treeset,LinkedHashset的哪一个在Java中具有更好的性能呢?
我的疑问是,为什么在“ B”和“ C”之间插入“ a”。
TreeSet对条目进行排序。
LinkedHashSet保留插入顺序。
HashSet不保留插入顺序,也不对条目进行排序/排序。这意味着,当您遍历集合时,将按难以理解的顺序返回条目,并且没有实际意义。此时没有"a"
插入任何特定的“原因”
。事实就是如此……给定了一组输入键及其插入顺序。
我唯一的疑问是,哈希集如何在Java中工作。
它实现了一个哈希表。阅读哈希表上的Wikipedia页面,以获取一般概述以及的源代码java.util.HashMap
和java.util.HashSet
详细信息。
简短的回答是,HashSet
和HashMap
均作为哈希链阵列实现的哈希表。
而且我知道,LinkedHashset遵循双重链表。如果它使用双向链表,那么它将如何存储元素?
LinkedHashSet
本质上是一个带有附加链表的哈希表,该链表记录了插入顺序。元素存储在主哈希表中……这就是提供快速查找的功能。同样,请参阅源代码以获取详细信息。
双向链表是什么意思,它是如何工作的?
阅读Wikipedia中的双向链接列表中的文章。
那么在Java中将使用这三个Hashset,Treeset,Linkedhashset的情况,哪个在Java中具有更好的性能呢?
在这三个类别(和其他类别)之间进行选择时,有很多事情要考虑:
他们是否提供所需的功能。例如,我们已经看到它们在迭代顺序方面有 不同的 行为。
它们是否具有必需的并发属性?例如,它们是线程安全的吗?他们处理争执吗?他们允许并发修改吗?
他们需要多少空间?
性能(时间)特征是什么?
关于最后两点?
A TreeSet
使用最少的空间,而A LinkedHashSet
使用最多的空间。
甲HashSet
趋于为最快的查找,插入和删除较大套,以及TreeSet
往往是最慢的。
本文向大家介绍Java中的HashMap和HashSet之间的区别。,包括了Java中的HashMap和HashSet之间的区别。的使用技巧和注意事项,需要的朋友参考一下 HashMap和HashSet都是Java Collection框架最重要的类之一。 以下是HashMap和HashSet之间的重要区别。 序号 键 哈希映射 哈希集 1 实作 Hashmap是Map接口的实现。 另一方面,哈希
问题内容: 除了不允许重复值的事实之外,和之间有什么区别? 我的意思是实施明智?这有点含糊,因为它们都使用 哈希表 存储值。 问题答案: 它们是完全不同的构造。A 是的实现。一个地图键映射到值。密钥查找使用哈希进行。 另一方面,a 是的实现。一组被设计成一组的数学模型相匹配。一个不使用支持其实现,正如你指出。但是,它实现了完全不同的接口。 当您寻找最适合您的目的时,本教程是一个很好的起点。如果您真
问题内容: Java中的Collection和Collections之间的主要区别是什么? 问题答案: 是大多数集合类的基本接口,而是实用程序类。我建议您阅读文档。
本文向大家介绍详解Java中HashSet和TreeSet的区别,包括了详解Java中HashSet和TreeSet的区别的使用技巧和注意事项,需要的朋友参考一下 详解Java中HashSet和TreeSet的区别 1. HashSet HashSet有以下特点: 不能保证元素的排列顺序,顺序有可能发生变化 不是同步的 集合元素可以是null,但只能放入一个null 当向HashSet集合中存入一
本文向大家介绍Java中LinkedList和LinkedHashSet之间的区别,包括了Java中LinkedList和LinkedHashSet之间的区别的使用技巧和注意事项,需要的朋友参考一下 LinkedList和LinkedHashSet都是Java Collection框架最重要的类之一。 以下是LinkedList和LinkedHashSet之间的重要区别。 序号 键 链表 链接哈希
本文向大家介绍Kafka和Flume之间的主要区别是什么?相关面试题,主要包含被问及Kafka和Flume之间的主要区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 答:Kafka和Flume之间的主要区别是: 工具类型 Apache Kafka——Kafka是面向多个生产商和消费者的通用工具。 Apache Flume——Flume被认为是特定应用程序的专用工具。 复制功能 Apache