40道Java基础常见面试题及详细答案
1、通过hashCode可以很快的查到小内存块。 2、通过hashCode比较比equal方法快,当get时先比较hashCode,如果hashCode不同,直接返回false。 List的三个子类的特点 ArrayList:
Vector:
LinkedList
Vector和ArrayList的区别
ArrayList和LinkedList的区别
共同点:都是线程不安全的 List有三个子类使用
String:适用于少量的字符串操作的情况。?StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况。?StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况。?StringBuilder:是线程不安全的,而StringBuffer是线程安全的。 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String。 String最慢的原因 String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。 再来说线程安全 在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的。 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时,StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程是安全的,但StringBuilder的方法则没有该关键字,所以不能保证线程安全,有可能会出现一些错误的操作。所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快的StringBuilder。 Map
Set
List
Queue
Stack
用法
更为精炼的总结 Collection 是对象集合, Collection 有两个子接口 List 和 Set List?可以通过下标 (1,2..) 来取得值,值可以重复。?Set?只能通过游标来取值,并且值是不能重复的。 ArrayList , Vector , LinkedList 是 List 的实现类
Map 是键值对集合
Stack类:继承自Vector,实现一个后进先出的栈。提供了几个基本方法,push、pop、peak、empty、search等。 Queue接口:提供了几个基本方法,offer、poll、peek等。已知实现类有LinkedList、PriorityQueue等。 https://segmentfault.com/a/1190000008101567 Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现,它们都是集合中将数据无序存放的。 1、hashMap去掉了HashTable?的contains方法,但是加上了containsValue()和containsKey()方法 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |