1:String类,字符串是常量,他们的值在建立以后不能更改,能够共享。java
equals()用来比较两个字符串的值,==只有当这两个实例指向同一个字符串对象才返回true数组
2:线程安全的可变字符串类StringBuffer,主要操做是append()和insert()。缓存
3:可变字符串类StringBuilder,不保证同步,用在字符串缓存区被单个线程使用的时候,比StringBuffer快。安全
三者的使用状况:多线程
a)若是偶尔对剪子的字符串常量进行拼接,那么可使用String,他足够简单并且轻量级。app
b)若是须要常常对字符串进行拼接、累加操做,使用StringBuffer或者StringBuilder框架
c)单线程使用StringBuilder,他比StringBuffer快,多线程中选后者,他是线程安全的。ide
4:集合类Collection,表明多个对象的集合,分为工具
a)Queue类:队列类,先进先出的队列ui
b)List类,列表类,元素有序,且容许重复
c)Set类,集合类,元素能够有序也能够无序,不容许重复。
映射类Map:存储多个键值对。
5:Collections与Collection的区别:前者是对后者集合类进行各类操做的服务类。
a)Collection是个java.util下的接口,它提供了对集合对象进行基本操做的通用接口方法,collection接口在java类库中有不少具体的实现,它的意义是为各类具体的集合提供了最大化的统一操做方式。
b)conllections是个java.util下的实体类,它包含各类有关集合操做的静态方法,提供一系列静态方法实现对各个集合的搜索、排序、线程安全化等操做,就像一个工具类,服务于java的Collection框架。
6:列表类List
a)LinkedList链式访问,以指针相连,适合于在链表中间须要频繁进行插入和删除操做。
b)ArrayList相似数组的形式,按照序号存储,随机访问速度很是快。
c)Vector向量按照各元素序号存储,数组大小能够动态增加,对于大容量数据存储效率较高。
d)Stack堆栈,先进后出的数组。
7:这些类的对比与选择:
若是涉及到堆栈队列等操做,应该考虑List中的stack,queue
对于须要快速插入删除元素,应该使用linkedlist
若是须要快速随机访问元素,应该选用arraylist
若是程序在单线程环境中,选用非同步类
若是在多线程中,选用同步类vector、stack和hashtable以及其子类。
8:map选择
hashtable和hashmap相似,可是hashtable是同步的,可是hashmap容许null来做为key和value值。
weakhashmap是一种改进的hashmap,他对key进行弱引用,若是一个key再也不被外部引用,则被gc回收。