集合框架(重点)
数组存储的缺点
1、数组一旦初始化后,长度和类型就确定了;
2、数组中提供的方法有限、对于增删改等操作不方便,效率也不高
3、能够解决有序、可重复,但对于无序和不可重复的需求时,不能够满足
基本概念
当需要在Java程序中记录单个数据内容时,则声明一个变量即可;
当需要在Java程序中记录多个类型相同的数据内容时,则声明-个- -维数组即可;
当需要在Java程序中记录多个类型不同的数据内容时,则创建一个对象即可;
当需要在Java程序中记录多个类型相同的对象数据时,则创建一个对象数组即可;
当需要在Java程序中记录多个类型不同的对象数据时,则准备-个集合即可;
Java中集合框架的顶层框架是: java.util.Collection集合 和java.util.Map集合。↓
其中Collection集合中存取元素的基本单位是:单个元素。
其中Map集合中存取元素的基本单位是:单对元素。
Collection boolean add(E e) 向集合中添加对象 boolean contains (Object o) - 判断是否包含指定对象 boolean remove (object 0) 从集合中删除对象 void clear() ; 清空集合 int size() ;一 返回包含对象的个数 boolean isEmpty) ; - 判断是否为空 Object[] toArray(); - 将集合转换成数组 将数组转换成集合? Iterator<E> iterator()-遍历集合中的元素 Iterator对象称为迭代器,主要用于遍历collect ion集合中的元素 boolean hasNext () 如果仍有元素可以迭代,则返回true。 E next () 返回迭代的下一个元素。 注意:集合对象每次调用i terator ()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前。 不能访问 Map 使用 增强for循环 的格式是什么? 增强for循环: for(集合/数组的数据类型 变量名 : 集合名/数组名){ } 使用foreach循环遍历集合元素 -JDK1. 5提供,可以迭代访问collection和数组 遍历时不需要获取collect ion或数组的长度,也不需要使用索引访问 本质上,底层也是调用iterator 格式: for (要遍历的元素类型 遍历后自定义元素名称:要遍历的结构名称) { System. out. println (遍历后自定义元素名称) ; }
List集合(重点)
基本概念
java.til.List集合是Collection集合的子集合,该集合中允许有重复的元素并且有先后放入次序。
该集合的主要实现类有: ArrayList类、 LinkedList类. Stack类、 Vector类。
其中ArrayList类的底层是采用动态数组进行数据管理的,支持下标访问,增删改元素不方便,查找方便。
其中LinkedList类的底层是采用双向链表进行数据管理的,访问不方便,增删改元素方便。
其中Stack类的底层是采用动态数组进行数据管理的,该类主要用于描述一-种具有后进先出特征的
数据结构,叫做栈(last in first out LIFO)。
其中Vector类的底层是采用动态数组进行数据管理的,该类与ArrayList类相比属于线程安全的类,
效率比较低。
Vector类从jdk1.0开始(被抛弃) Collection 从jdk1.2开始 ArrayList 从jdk1.2开始
如果需要线程安全的LIst集合时,用Collections.synchronizedList(List<T> list)或者CopyOnWriteArrayList<E>
void add(int index, E element)-
向集合中指定位置添加元素
boolean addAll (int index, Collection<? extends> c) -
向集合中添加所有元
E get(int index)
-
从集合中获取指定位置元素
E set(int index,E element) - 修改指定位置的元素
E remove (int index) -删除指定位置的元素
List<E> subList (int fromIndex, int toIndex) ; -
获取子Nist,前闭后开
注意: subList获取的List与原List占有相同的存储空间,对子List的操作会影响到原List。
Queue集合(重点)
基本概念
java.util.Queue集合是Collection集合的子集合,与List集合属于平级关系。
该集合的主要用于描述具有先进先出特征的数据结构,叫做队列(first in first out FIFO)
该集合的主要实现类是LinkedList类,因为该类在地增删方面比较有优势。