string给定的长度 不可变,当多个字符串联合的时候先转化为stringbuffer然后联合,速度慢,stringbuffer可以改变字符串的长度,当多个字符串连接的时候采用stringbuffer效率比较高。
集合的作用
对数据进行传送,对数据进行增删改查,还可以用来存放不同的对象。
import java.util.Vector;
import java.util.List;import java.util.Iterator;import java.util.Enumeration;/**
* @desc Vector测试函数:遍历Vector和常用API * * @author skywang */public class VectorTest { public static void main(String[] args) { // 新建Vector Vector vec = new Vector(); // 添加元素 vec.add("1"); vec.add("2"); vec.add("3"); vec.add("4"); vec.add("5");// 设置第一个元素为100
vec.set(0, "100"); // 将“500”插入到第3个位置 vec.add(2, "300"); System.out.println("vec:"+vec);// (顺序查找)获取100的索引
System.out.println("vec.indexOf(100):"+vec.indexOf("100")); // (倒序查找)获取100的索引 System.out.println("vec.lastIndexOf(100):"+vec.lastIndexOf("100")); // 获取第一个元素 System.out.println("vec.firstElement():"+vec.firstElement()); // 获取第3个元素 System.out.println("vec.elementAt(2):"+vec.elementAt(2)); // 获取最后一个元素 System.out.println("vec.lastElement():"+vec.lastElement());// 获取Vector的大小
System.out.println("size:"+vec.size()); // 获取Vector的总的容量 System.out.println("capacity:"+vec.capacity());// 获取vector的“第2”到“第4”个元素
System.out.println("vec 2 to 4:"+vec.subList(1, 4));// 通过Enumeration遍历Vector
Enumeration enu = vec.elements(); while(enu.hasMoreElements()) System.out.println("nextElement():"+enu.nextElement()); Vector retainVec = new Vector(); retainVec.add("100"); retainVec.add("300"); // 获取“vec”中包含在“retainVec中的元素”的集合 System.out.println("vec.retain():"+vec.retainAll(retainVec)); System.out.println("vec:"+vec); // 获取vec对应的String数组 String[] arr = (String[]) vec.toArray(new String[0]); for (String str:arr) System.out.println("str:"+str);// 清空Vector。clear()和removeAllElements()一样!
vec.clear();// vec.removeAllElements();// 判断Vector是否为空
System.out.println("vec.isEmpty():"+vec.isEmpty()); } }ArrayList和vector以数组的方式进行存储,查改块,增删慢。
ArrayList线程不安全,速度快。
vector线程安全的,速度慢(synchoronized)。
linklist增删快,查改慢,以链表存储。
hashmap和hashtable都是继承了map,hashtable线程是安全的,hashmap线程不安全。
collection是集合的子接口collections是算法
今天翻看Java笔试题,发现有这样问题,比较Collection 和Collections的区别。在这里把二者区别记录下来。
1、java.util.Collection 是一个 集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set
2、java.util.Collections 是一个包装类。它包含有各种有关集合操作的 静态多态方法。此类 不能实例化,就像一 个工具类,服务于Java的Collection框架。
-
import java.util.ArrayList;
import java.util.Collections;import java.util.List;public class TestCollections {
public static void main(String args[]) { //注意List是实现Collection接口的 List list = new ArrayList(); double array[] = { 112, 111, 23, 456, 231 }; for (int i = 0; i < array.length; i++) { list.add(new Double(array[i])); } Collections.sort(list); for (int i = 0; i < array.length; i++) { System.out.println(list.get(i)); } // 结果:23.0 111.0 112.0 231.0 456.0 }} - set里面的集合是不能重复的,用什么来区分? 在比较时候先调用hashcode方法,如果hashcode方法不相同则证明不相等,如果相等在调用equils方法,如果不相等就是不相等。