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