1.请讲下Java里面的容器
2.请说下Iterator的作用
3.说下ArrayList和LinkedList的区别和联系,并说明什么情况下用它们
4.说下List,Set,Map三种集合各有什么特征
5.HashSet和TreeSet有什么区别,什么时候用它们
6.什么是泛型,怎么使用的,有什么好处?
7.什么是for each循环,它可以循环那些数据类型
8.写一个for each循环看看
9. 什么是强转怎么写的,有什么优缺点,一般要多用还是少用,为什么?
10.HashMap和Hashtable有什么区别,一 般情况下常用那个?
11.Hashtable名字为什么没有驼峰命名
12.Collections和Collection有什么区别
13.写出Collections的6个方法,并详细解释
14.Arrays类是做什么的,写出它的常用6个方法
15.比较下集合和数组的优缺点
16.如何对一个对象排序,有几种方法
17.在集合里面怎么判断两个对象相等,要实现什么方法
18.怎么样把集合转化成数组,或把数组转化为集合
19.分别写出List,Set,Map里面的5个常用方法
20.HashMap与LinkedHashMap,和TreeMap的区别。
共同点:HashMap,LinkedHashMap,TreeMap都属于Map的实现类.不同点: 1.HashMap里面存入的键值对在取出的时候是随机的,
2.TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
3. LinkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现.
21.HashMap怎么实现有序
可以转化放入TreeMap里面。
22.在List里面怎么去掉重复的数?
通过把List里面的数据放入HashSet可以去除重复
23.在List里面有几种排序?
答:两种:实现Comparable<Article>接口,实现里面的CompareTo方法进行排序。还有调用Collections.sort()方法排序!
24.说一下链表跟数组的区别
链表:用一组任意储存单元存放线性表的数据元素,并且通过指针链相接结点的序列称为链表。是一种常见的数据组织形式,它采用了动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费。不靠数组实现,没有下标。
数组必须事先定义固定的长度,不能适应数据动态增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成数据浪费。在使用的时候还要数组初始化,注意数组的下标越界。
25.HashSet的理解
HashSet实现了Set接口,HashSet不保证集合的迭代顺序,允许使用Null元素。HashSet的底层使用了HashMap,使用HashMap实列进行对集合的元素进行操作,然后再封装成HashSet的操作。
26.什么类可以实现有序存储(除ArrayList以外)?
一种按照插入的顺序排序,譬如LinkedList,LiskedHashMap,另外一种是插入后重新排序TreeSet,TreeMap
27.HashMap和ArrayList是不是都是线程不安全的?
ArrayList是线程不安全的;HashMap是线程不安全的;还有我们常见的一些JAVA集合都是线程不安全,这样做是为了提高性能
在JDK5以后提供了线程安全的并发包java.util.concurrent并发包,譬如里面的类CopyOnWriteArrayList,CopyOnWriteArraySet,ConcurrentHashMap等
28.ArrayList集合加入1万条数据,应该怎么提高效率
因为ArrayList的底层是数组实现,并且数组的默认值是10,如果插入10000条要不断的扩容,耗费时间,所以我们调用ArrayList的指定容量的构造器方法ArrayList(int size) 就可以实现不扩容,就提高了性能
29.你知道HashMap底层是怎么实现的吗?
简单的说是一个数组,因为数组的性能比较好,数组里面放的是Entry类,HashMap类有一个叫做Entry的内部类。这个Entry类包含了key-value作为实例变量。当存储或者获取对象的时候,就根据哈希算法,对象的hashCode调用得到这个下标,以便实现快速访问.
30.怎样遍历List Set,Map
List 和Set可以通过一般for循环,迭代器循环,或者增强型循环来遍历, 其中一般for循环性能最快,迭代器循环可以判断和得到下一个值,for each增强型循环扩展性强,但性能稍低.
Map循环可以通过keySet得到Key的Set集合,然后遍历这个集合就可以得到所有的Value
31.Set为什么是不允许重复的。
set的实现机制不允许重复的32.ArrayList为什么要用for循环,为什么要用迭代器,又有什么好处。
for循环通过对象拿到集合里的值
迭代器可以实现Collection接口的方法,可以一个一个地获取集合中的元素
在遍历集合时 可判断是否有下一个元素
33.你对栈与队列了解多少你是怎么用的。
答:队列是一种数据结构,FIFO 先进先出有点类似与栈,只是在队列中第一个插入的数据项也会被最先删除,
队列的两个基本操作:
一个是插入一个数据项,即把一个数据项放入队尾
另一个是移除一个数据项,即移除队头的数据项.
34.如果我要存取很多的数据,但是又不需要重复的,要选择什么容器,说一下为什么使用它,它是哪个的子类?
答:Set容器,它是不允许重复的,它是collection的子类
35.哪种方法可以得到Map的Key?
keySet()方法