ArrayList
package util; import java.util.*; public class ArrayListTest { /* * * ArrayList本质是一个数组,用户在操作其数据的时候,ArrayList会根椐需要进行增加删除 * 因为其实现,所以不适合数据的增删,但非常适合查询,有点像CD光盘 * * 使用时注意,最好预先创建好合适的ArrayList大小, * * 当ArrayList发现自已的容量不足时,就会在堆中开辟一块新的空间,空间大小为原来的*3/2+1的大小, * 然后将现有数据搬过去,原来的数据变为垃圾 * * * * * ArrayList alist = new ArrayList(100); */ /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //别名,动态数组 ArrayList alist = new ArrayList(); //LinkedList alist = new LinkedList(); alist.add("string"); // //alist.add(1);//jdk1.5之后, //如果要用对象的地方我们使用的基本的数据类型, //那么会被系统自动转为包装类,此例中的1会被自动转为Integer //反之,在使用基本数据类型的地方,我们写入了包装类的对象,会自动转为基本数据类型 alist.add("integer"); alist.add("Boolean"); alist.add("Long"); alist.add("Double");//放入后元素都会变成Object类型,所以取出的时候记得转型 alist.add("Double"); alist.add(2,"Byte");//将元素放在索引2下 alist.set(0, "String"); for(int i = 0 ; i < alist.size();i++){ String str = (String)alist.get(i); System.out.println(str); } for(Object obj : alist){ //1.5后出现的 String str = (String)obj; System.out.println(str); } //迭代器.在for。。。。each没出现之前,是集合遍历的最佳解决方案 Iterator it = alist.iterator(); while(it.hasNext()){ String str = (String)it.next(); //it.remove();移除当前的元素 System.out.println(str); } //alist.remove(0);//移除指定索引位的值 System.out.println("是否包含Double"+alist.contains("Double")); } }
package util; /* * LinkedList可以弥补ArrayList在增删方面的不足, * 它的实现和ArrayList不同,使用的是链表 * * LinedList查找是效率不高的,因为它不ArrayList * 一样 是数组,长度固定,可以跳过一些元素直接得到想要的元素 * LinkedList必须逐个检索 * * 有点像磁带机 * * */ public class LinkedListTest { //在使用的时候和ArrayList时感觉不出区别 }
package util; public class VectorTest { public static void main(String[] args) { //Vector的实现和ArrayList是一样的, //不同点在两个地方 /* * * 1. Vector 线程安全的,ArrayList不安全 * 2. 增长方式:ArrayList*3/2+1,Vector*2 * * */ } /***** * * 自已实现MyArrayList: 构造方法,add(),remove(),size(); * 应该有这个几个属性 : 1.ArrayList真实的大小, * 2. ArrayList 存放的对象的数量size; * * * * * * * * */ }