墨陌之提示您:看后求收藏(康妮小说网https://www.vkni.org),接着再看更方便。
2000字打个卡,今天又排位了。
list—是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式,它继承collection。 list有两个重要的实现类:arraylist和linkedlist
arraylist: 可以看作是能够自动增长容量的数组arraylist的toarray方法返回一个数组arraylist的aslist方法返回一个列表
arraylist底层的实现是array, 数组扩容实现
linklist是一个双链表,在添加和删除元素时具有比arraylist更好的性能但在get与set方面弱于arraylist当然,这些对比都是指数据量很大或者操作很频繁。
12、 hashmap和hashtable的区别
1、两者父类不同
hashmap是继承自abstractmap类,而hashtable是继承自dictionary类。不过它们都实现了同时实现了map、cloneable(可复制)、serializable(可序列化)这三个接口。
2、对外提供的接口不同
hashtable比hashmap多提供了elments() 和contains() 两个方法。
elments() 方法继承自hashtable的父类dictionnary。elements() 方法用于返回此hashtable中的
value的枚举。
contains()方法判断该hashtable是否包含传入的value。它的作用与containsvalue()一致。事实上, contansvalue() 就只是调用了一下contains() 方法。
3、对null的支持不同
hashtable:key和value都不能为null。
hashmap:key可以为null,但是这样的key只能有一个,因为必须保证key的唯一性;可以有多个key
值对应的value为null。
4、安全性不同
hashmap是线程不安全的,在多线程并发的环境下,可能会产生死锁等问题,因此需要开发人员自己 处理多线程的安全问题。
hashtable是线程安全的,它的每个方法上都有synchronized 关键字,因此可直接用于多线程中。
虽然hashmap是线程不安全的,但是它的效率远远高于hashtable,这样设计是合理的,因为大部分的 使用场景都是单线程。当需要多线程操作的时候可以使用线程安全的concurrenthashmap。
concurrenthashmap虽然也是线程安全的,但是它的效率比hashtable要高好多倍。因为concurrenthashmap使用了分段锁,并不对整个数据进行锁定。
5、初始容量大小和每次扩充容量大小不1、 java语言有哪些特点
1、简单易学、有丰富的类库
2、面向对象(java最重要的特性,让程序耦合度更低,内聚性更高)
3、与平台无关性(jvm是java跨平台使用的根本)
4、可靠安全
5、支持多线程
2、面向对象和面向过程的区别
面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调 用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发
面向对象:是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是 为了描述某个事物在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,所以 易维护、易复用、易扩展。可以设计出低耦合的系统。 但是性能上来说,比面重载 总结:
重载overload是一个类中多态性的一种表现
重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)
重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准
8、 equals与==的区别
== :
== 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。
1、比较的是操作符两端的操作数是否是同一个对象。
2、两边的操作数必须是同一类型的(可以是父子类之间)才能编译通过。
3、比较的是地址,如果是具体的阿拉伯数字的比较,值相等则为true,如:
int a=10 与 long b=10l 与 double c=100都是相同的(为true),因为他们都指向地址为10的堆。
equals:
equals用来比较的是两个对象的内容是否相等,由于所有的类都是继承自javalangobject类的,所以 适用于所有对象,如果没有对该方法进行覆盖的话,调用的仍然是object类中的方法,而object中的equals方法返回的却是==的判断。
总结:
所有比较是否相等时,都是用equals 并且在对常量相比较时,把常量写在前面,因为使用object的
equals object可能为null 则空指针
在阿里的代码规范中只使用equals ,阿里插件默认会识别,并可以快速修改,推荐安装阿里插件来排查老代码使用“==”,替换成equals
9、 hashcode的作用
java的集合有两类,一类是list,还有一类是set。前者有序可重复,后者无序不重复。当我们在set中 插入的时候怎么判断是否已经存在该元素呢,可以通过equals方法。但是如果元素太多,用这样的方法 就会比较满。
于是有人发明了哈希算法来提高集合中查找元素的效率。 这种方式将集合分成若干个存储区域,每个对象可以计算出一个哈希码,可以将哈希码分组,每组分别对应某个存储区域,根据一个对象的哈希码就 可以确定该对象应该存储的那个区域。
hashcode方法可以这样理解:它返回的就是根据对象的内存地址换算出的一个值。这样一来,当集合 要添加新的元素时,先调用这个元素的hashcode方法,就一下子能定位到它应该放置的物理位置上。 如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;如果这个位置上 已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地 址。这样一来实际调用equals方法的次数就大大降低了,几乎只需要一两次。
10、string、string stringbuer 和 stringbuilder 的区别是什么
string是只读字符串,它并不是基本数据类型,而是一个对象。从底层源码来看是一个nal类型的字符 数组,所引用的字符串不能被改变,一经定义,无法再增删改。每次对string的操作都会生成新的string对象。向过程要低。同
6、计算hash值的方法不同