集合框架
一、 Collection接口
-
创建集合对象Collectioncoll = new ArrayList<>();
ArrayList();空参构造,构造一个容量为10的集合对象。
-
Collection接口常用的方法:
- Add(E e);向集合对象中添加元素
- clear();清空整个集合
- remove(Object obj);删除指定元素
- size(); 返回集合的长度,储存元素的个数
-
Collection的遍历,迭代器遍历(Iterator)
- 因为集合的实现类,他的底层的实现方式各不相同,有的有下标,有的没有下标,遍历的时候遍历的方式都不相同,java中提供了统一的遍历方式,迭代器的遍历
- 迭代器遍历:
* 创建迭代器对象 ,iterator获取迭代器对象
* 判断是否有元素可以进行遍历,迭代器对象.hasNext()方法进行判断
* 取出里面的元素,迭代器对象.next();方法取出里面的元素-
注意:在使用迭代器进行遍历的时候,比恩对集合中的元素进修删除,增加,如果需要删除,必须使用迭代器的remove方法
-
使用for循环,while循环,两个迭代器的生命周期不同,节约内存
-
使用泛型的方式去创建集合
- Collection<泛型>list = new ArrayList<泛型>();
- 泛型:所有的引用数据类型
- 特点:只能储存同一种数据类型,方便数据归类,避免进行强转
-
二、List接口
-
特点:元素有序,有下标,索引,元素可以重复,也可以储存多个null
-
List接口中特有的方法:
- add(index,E e):将元素添加到指定的索引位置;
- get(int index);通过下标取出元素;
- indexOf(Object o);返回此列表中第一次出现o元素是索引,如果没有,返回-1;
- remove(int index);移除指定下标位置的元素
- set(int index,E e);使用e去替换index下标中的元素,修改index下标中的元素
- 可以通过普通的for循环进行遍历
1. ArrayList集合
- 在这里插入代码片特点:底层实现是数组,查找修改比较块,增加删除比较慢
- 特殊的方法:与List接口中的方法一致。
2. LinkedList集合
- 特点:底层实现是链表,查找,修改比较慢,增加删除比较快,链表结构,LinkedList里面增加了许多对集合首尾元素的操作方法,并且在LinkedList中实现了队列(Queue)的接口。
- 特殊的方法:
. *addFirst(E e);将e元素添加到集合的首尾
* addLast(E e);将e元素添加到集合的末尾
* removeFirst(); 移除集合中首尾元素
*removeLast();移除集合中的最后一位元素
* getFirst();用来获取首尾元素
* getLast();用来获取最后一位元素 - 队列接口中的方法:
** offer(E e);将元素添加到队列的末尾
** peek();获取集合中的第一个元素
** poll();获取并移除首位元素
public class LinkedListTest {
public static void main(String[] args) {
LinkedList<String> list = new LinkedList<String>();
// addFirst() addLast() 方法?
list.add("王五");
list.add("赵六");
// 将李四 添加到集合的首位,将王八添加到集合的末尾
list.addFirst("李四");
list.addLast("王八");
System.out.println(list);
// 移除首尾,和最后一位
//list.removeFirst();
//list.removeLast();
//System.out.println(list);
// 获取首尾/最后一位
String first = list.getFirst();
String last = list.getLast();
System.out.println(first + "==" + last);
System.out.println("-------------------");
System.out.println(list);
list.offer("啤酒");
System.out.println(list);
/*String peek = list.peek();
System.out.println(peek);*/
String poll = list.poll();
System.out.println(poll);
System.out.println(list);
}
}
3.Vector
- 特点:是线程安全的,底层使用数组实现,基本上被ArrayList取代,方法与ArrayList一样