package com.f; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; public class Test_Collection { /** * 集合出现的意义: * 面向对象,要对对象进行存储。对象不能是一个基础的变量,需要用容器存储。 * * 学过的容器:StringBuilder,数组 * StringBuilder结果是字符串,数组的长度是固定的,不能作为对象的容器。 * * 引出集合Collection: * * Collection的特点: * 集合层次结构中的根界面 。 集合表示一组被称为其元素的对象。 * 一些集合允许重复元素,而其他集合不允许。 有些被命令和其他无序。 * JDK不提供此接口的任何直接实现:它提供了更具体的子接口的实现,如Set和List 。 该界面通常用于传递集合,并在需要最大的通用性的情况下对其进行操作。 * * ArrayList的构造方法 * A:ArrayList() * 构造一个初始容量为十的空列表。 * B:ArrayList(Collection<? extends E> c); <E>泛型,放引用对象即可生命此集合之后会放哪种对象 * 构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序。 * C:ArrayList(int initialCapacity) * * 集合的成员方法: * a.add(<E>); 添加元素,源码永远返回true * c.remove(<E>); 移除成功返回true,失败false * c.clear(); 清空集合 * c.isEmpty();判断集合是否为空 * c.size();集合元素的个数 * * 集合元素的遍历: * Iterator:迭代器 * 创建方法: * Iterator<String> i = c.iterator(); Iterator是一个接口,说明这个使用子类创建父类引用,多态的创建方式。 * 方法: * hasNext();判断是否有下个元素 * next();获取下一个元素 * * List集合的特点:有序,可重复 又被称为序列。 * * List集合的特有成员方法: * add(int index, E element);在指定位置添加元素,后面的元素后移 * add(int index);删除指定位置元素 * get(int index);获取指定位置元素 * set(int index,E element);修改指定位置元素 * * List的便利: * A:迭代器Iterator迭代器便利 * B:for循环便利 * * 列表迭代器ListIterator<> * 继承于普通迭代器。 * 特有方法有:反向遍历,Previous,hasPrevious;反向遍历的前提是要先正向遍历一便(所以一般用不到) * * 集合中并发修改的异常: * 产生原因:迭代器依赖于集合存在,当在迭代的时候往集合里添加元素,迭代器并不知道就会报这个错误。 * 解决方法: * A:迭代器遍历的时候用迭代器的方法去修改元素。(迭代器的添加是添加在刚才迭代的元素后面的) * B:集合遍历的时候用集合方法去修改元素。 * * * 增强for循环: * for(元素数据类型 变量名:数组或者Collection集合){ * * } * * 目的:代替迭代器的(验证,在增强for里对集合进行修改,也会报集合并发修改异常) * 好处:书写方便,简化遍历代码 * 弊端:当数组或者Collection对象为null的时候会报空指针异常。在使用之前要对集合进行空判断。 */ public static void main(String[] args) { // Collection<String> c = new ArrayList<String>();//完整的创建一个Stirng类型的集合,建议使用这种完整的写法 //JDK1.7特性 Collection<String> c = new ArrayList();与上面意思一致 // c.add("a"); // c.add("b"); // c.add("cde"); // c.remove("a");//true // c.remove("hha");//false // // c.clear(); // // c.isEmpty(); // c.size(); // Iterator<String> i = c.iterator(); // i.hasNext(); // i.next(); // while (i.hasNext()){ // System.out.println(i.next()); // } // // System.out.println(c);//重写了to_String方法 List<String> l = new ArrayList<String>(); l.add("hello"); l.add("world"); l.add("java"); for (int i = 0;i<l.size();i++){ System.out.println(l.get(i)); } } }
package com.f; public class Test_sjjg { /** * 常见的数据结构: * 栈,队列,数组,链表 * * List集合特点: * ArrarList:底层是数组,查询快,增删慢 * LinkList:底层是链表,查询慢,增删快 * * ArraryList遍历: * 普通for * 迭代器 * 增强for */ }
迭代器便利过程,和集合的使用步骤
栈,队列的数据结构
数组和链表数据结构