1.说出ArrayList,LinkedList的储存性能和特性?
区别如下:
- ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,优点是索引读取快,从最后插入和删除元素速度快,但是头部插入和删除慢。
- LinkedList使用双向循环链表方式存储数据,所以头尾插入或读取插入的速度快,而中部插入和读取慢.
2.HashMap 和 Hashtable 的区别
1. 历史原因:Hashtable 是陈旧API,HashMap 是Java 1.2 引进的Map 接口的一个实现
2. 同步性:Hashtable 是线程安全的,也就是说是同步的,而HashMap 是线程序不安全的,不是同步的。由于同步检查所以Hashtable性能稍慢。
3. 值:HashMap 可以插入一个null的key-value
3.List、Map、Set三个接口,存取元素时,各有什么特点?
1. List特点:元素有顺序,元素可重复
2. Set特点:元素无顺序,元素不可重复(注意:元素虽然无顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
3. Map特点:元素按键值对存储,无顺序
4.队列和栈是什么,列出它们的区别?
1. 队列(Queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。
2. 栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。
3. 队列先进先出(FIFO),栈先进后出(FILO)。
5.String与StringBuffer的区别,StringBuffer和StringBuilder的区别是什么?
1. String是不可变的,StringBuffer是可变的;StringBuffer是线程安全的,StringBuilder是非线程安全的。
2. 由于字符串链接会自动创建StringBuilder对象,为了避免复杂字符串拼接时候大量创建StringBuilder对象,可以利用StringBuilder优化字符串链接操作。
4. StringBuilder是jdk5之后新增的,其用法与StringBuffer完全一致,但它是线程不安全的,在单线程中最佳,因为其不需要维护线程的安全,因此是最快的。
标签: String StringBuffer StringBuilder
6.String类能不能被继承,为什么?
不能被继承,因为String类是final类,final修饰的类是不能被继承
7.“==”和“equals”的区别
1. `==`是值比较,对于引用类型变量`==`是判断引用的值是否是同一个对象地址值,如果是相同对象其内容也一定是相同的
2. equals方法判断的是对象的内容是否相同,由于其默认方法采用的`==`进行引用比较,所以需要重写为按照对象内容比较是否相同。
8.HashSet 和 HashMap 区别?
1. HashMap :实现Map接口;使用hash算法,里面的数据是无序的;并且存储的是键值对;
2. HashSet :实现了Set接口;内部封装了HashMap,故也是无序的;HashSet本质就是HashMap,数据存储到HashSet的Key部分,Value部分被屏蔽不使用了。
9.描述栈,队列中元素的出入顺序。
1. 栈的数据结构是,先进后出(FILO),也可以说是后进先出
2. 队列的数据结构是,先进先出(FIFO)
10.Comparable和Comparator接口是干什么的?列出它们的区别。
1. Comparable接口
1. 实现Comparable接口类表示这个类型的对象可以进行比较大小的。 这种可以比较大小的对象可以进行自然排序。
2. Comparator接口
1. 比较器用于实现对象任意属性进行比较大小。
2. 在排序时候可以通过指定属性比较器实现任意属性排序。
3. 在排序时候Comparable接口用于进行自然排序,而Comparator接口进行自定义排序,自定义排序更加灵活方便而常用。
4. 设计上Comparable不推荐使用,因为对程序本身具有侵入性。