1:String类,字符串是常量,他们的值在创建之后不能更改,可以共享。

  equals()用来比较两个字符串的值,==只有当这两个实例指向同一个字符串对象才返回true

2:线程安全的可变字符串类StringBuffer,主要操作是append()和insert()。

3:可变字符串类StringBuilder,不保证同步,用在字符串缓存区被单个线程使用的时候,比StringBuffer快。

三者的使用情况:

a)如果偶尔对剪子的字符串常量进行拼接,那么可以使用String,他足够简单而且轻量级。

b)如果需要经常对字符串进行拼接、累加操作,使用StringBuffer或者StringBuilder

c)单线程使用StringBuilder,他比StringBuffer快,多线程中选后者,他是线程安全的。

 

4:集合类Collection,代表多个对象的集合,分为

a)Queue类:队列类,先进先出的队列

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回收。