StringBuilder与StringBuffer是Java系统中提供的带有缓冲区的字符串。用于对字符串进行频繁的修改操作。
StringBuilder类与String类的区别
StringBuilder 和String类一样也表示一个字符串,不同之处在于StringBuilder提供了一个缓冲区可用于字符序列的缓冲,可以提高对字符串进行频繁操作(拼接和插入)的效率,同时提供了对字符串的拼接/插入/删除操作方法。
StringBuilder与StringBuffer的区别
StringBuilder没有实现线程同步,是线程非安全的;StringBuffer实现了线程同步,是线程安全的。StringBuilder执行效率相较于StringBuffer而言会更高一些。
StringBuilder的使用:(StringBuffer使用类似)
java.util.Collection接口:是所有单值集合类的父接口
Collection<接口> |
List<接口> 元素有序可重复 |
ArrayList |
LinkedList |
||
Vector |
||
Set<接口> 元素无序不可重复 |
HashSet |
|
LinkedHashSet |
||
TreeSet |
java.util.Map接口:是所有映射集合的父接口
Map<接口> |
AbstractMap <抽象类> |
HashMap |
TreeMap |
||
Hashtable |
Properties |
ConcurrentHashMap 分段锁
List集合
ArrayList和LinkedList都是List接口下的实现类,都表示元素有序可重复的单值集合。
ArrayList的元素存储是基于数组的实现,对元素的查询及修改操作效率较高;
LinkedList的元素存储是基于链表的实现,对元素的删除及插入操作效率较高。
ArrayList和Vector都是List下的单值集合类,而且元素存储都是基于数组的实现。
ArrayList未实现线程同步,是线程非安全的;Vector则实现了线程同步,是线程安全的;
在非多线程编程中建议使用ArrayList,效率较高一些。
set集合
元素去重原理:通过比较hash码确定元素是否重复
HashSet |
|
LinkedHashSet |
|
TreeSet |
|
TreeSet中的元素是以二叉树(红黑树/B树)为数据结构进行存储的。
TreeSet中存储的元素需要定义排序规则:
Map映射
Hashtable和HashMap都是Map接口下基于哈希表的实现的映射
Hashtable不允许null键和null值,并且实现了线程同步,是线程安全的;
HashMap允许一个null键和多个null值,未实现线程同步,多用于单线程编程。
中序遍历:左根右
先序遍历:根左右
后序遍历:左右根
Collections类,提供了对集合或集合中的元素进行操作的静态的方法。 java.util.Collections
如:创建空集合,集合元素顺序反转,集合元素排序。。。。
区别:
Collection是一个接口,是所有集合的顶层接口;
Collections是一个帮助类,提供了对集合或集合中的元素进行操作的静态的方法。
Arrays类是一个数组的帮助类,此类中提供了多个用于对数组及数组中元素进行操作的静态方法。
Arrays.sort(arr) 快排
另外:sum、count