论坛首页 入门技术论坛

JAVA集合入门问题(原创)

浏览 2661 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-08-15  

· 问题:
· 既然有了数组,为什么还要ArrayList?__________
· 答:因为数组大小本来不可变;如果要变化,则必须重新分配内存,太消耗资源。
· 数组只能同一种基本数据类型;或者同一个类的对象(排除Object)。
· ArrayList中有重复元素吗?______,因为_______。增加值的顺序是1,3,4,5,1,那么输出的的值顺序为(考虑重复值和值的排序):_______。
· 答:有。因为ArrayList也是在Array的基础之上开发的(或者说:封装了数组),由于数组可以保存重复元素的值,所以ArrayList也可以。输入的值顺序为1,3,4,5,1。道理相同。
· TreeSet中有重复元素吗?________,因为_______。增加值的顺序是1,3,4,5,1,那么输出的的值顺序为_______
· 答:无。因为:ArrayList叫做有序列表,有顺序就可以通过下标来标识,所以元素可以重复。Set叫做无序列表,只能通过值的本身来标识,所以值是不以重复的;由于无序,所以每次输出的结果不可预料。输出结果为:1,3,4,5(可能的顺序,关键是重复的1没有出现。在JDK5.0以后,1可以自动由int转化为Integer类型)。
· 当数据集经常在中间插入、删除时,用集合的哪种类型:_______,因为______。
· 答:LinkedList。因为:LinkedList叫做链表;链表的数据结构适合在元素增加或减少时,对整体的内存没有影响;只是影响两个相邻的元素。而ArryList是底层封装了Array,所以在元素变化时仍然要重新分配内存。
· 当数据集常在后面追加时,用_______,因为_____________。
· 答:用ArrayList。因为SUN针对这个问题做了比较好的封装。
· 单个循环输出,效率比较高的是________,因为___________。
· 答::用ArrayList,因为它是有序列表,是通过下标进行访问的,所以效率最高。
· Vector与ArrayList的区别是:________。
· 答:两者功能完全相同。但是Vector用于多线程,不会有线程安全问题。因为Vector用了Sychronized关键字。而ArrayList没有用,所以ArrayList线程不安全,Vector线程安全。但是Vector被称为“过时的”,是不是就不能用了呢。不是。称为过时的原因是因为ArrayList很容易就变成线程安全的(加一句代码即可),这样ArrayList即可以用于单线程环境,又可以很方便地在多线程环境中使用,所以相比之下Vector就过时了。
· Set中的元素都是不能重复的,那HashSet与TreeSet的区别?
答:假设输入值的顺序为:1,4,3,1,用HashSet输出的顺序为:1,4,3(可能);用TreeSet输出的顺序为:1,3,4(如Windows的文件夹,不能重复,且有顺序)。
· HashTable与HashMap的区别是:_______
答:Table就是表的意思(如学生表的学号列,特征是不能重复,而且不能为空。表是可以多个人访问的,所以线程是安全的)。HashMap的Key值是可以为空的,线程是不安全的。

 

   发表时间:2007-08-15  
谢谢!!
确实涨了不少知识!!
0 请登录后投票
   发表时间:2008-06-13  
呵呵
真的不错哦
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics