不安装jdk运行java程序详解 java不是内部命令( 三 )


Java中的HashMap是以键值对(key-value)的形式存储元素的 。HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合/从集合添加和检索元素 。当调用put()方法的时候,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上 。如果key已经存在了,value会被更新成新值 。HashMap的一些重要的特性是它的容量(capacity),负载因子(load factor)和扩容极限(threshold resizing) 。
17.HashMap和Hashtable有什么区别?
?HashMap和Hashtable都实现了Map接口,因此很多特性非常相似 。但是,他们有以下不同点:
?HashMap允许键和值是null,而Hashtable不允许键或者值是null 。
?Hashtable是同步的,而HashMap不是 。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境 。
?HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的 。另一方面,Hashtable提供了对键的列举(Enumeration) 。
o一般认为Hashtable是一个遗留的类 。
18.数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?
下面列出了Array和ArrayList的不同点:
?Array可以包含基本类型和对象类型,ArrayList只能包含对象类型 。
?Array大小是固定的,ArrayList的大小是动态变化的 。
?ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等 。
?对于基本类型数据,集合使用自动装箱来减少编码工作量 。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢 。
19.ArrayList和LinkedList有什么区别?
ArrayList和LinkedList都实现了List接口,他们有以下的不同点:
?ArrayList是基于索引的数据接口**,它的底层是数组** 。它可以以O(1)时间复杂度对元素进行随机访问 。与此对应,LinkedList是以元素链表的形式存储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n) 。
?相对于ArrayList,LinkedList的插入,添加,删除操作速度更快,因为当元素被添加到集合任意位置的时候,不需要像数组那样重新计算大小或者是更新索引 。
?LinkedList比ArrayList更占内存,因为LinkedList为每一个节点存储了两个引用,一个指向前一个元素,一个指向下一个元素 。
也可以参考ArrayList vs. LinkedList 。
20.如何权衡是使用无序的数组还是有序的数组?
有序数组最大的好处在于查找的时间复杂度是O(log n),而无序数组是O(n) 。有序数组的缺点是插入操作的时间复杂度是O(n),因为值大的元素需要往后移动来给新元素腾位置 。相反,无序数组的插入时间复杂度是常量O(1) 。
21.HashSet和TreeSet有什么区别?
HashSet是由一个hash表来实现的,因此,它的元素是无序的 。add(),remove(),contains()方法的时间复杂度是O(1) 。
另一方面,**TreeSet是由一个树形的结构来实现的,它里面的元素是有序的 。**因此,add(),remove(),contains()方法的时间复杂度是O(logn) 。
22.Java中垃圾回收有什么目的?什么时候进行垃圾回收?
垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源 。
23.如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?
不会,在下一个垃圾回收周期中,这个对象将是可被回收的 。
24、String是最基本的数据类型吗?
基本数据类型包括byte、int、char、long、float、double、boolean和short 。
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类 。为了提高效率节省空间,我们应该用StringBuffer类


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: