顶层接口Collection常用功能
创建Collection集合的对象:
-
多态: 多态的方式 – 父类引用指向子类对象 Collection c = new ArrayList();
-
具体的实现类创建 – 本类引用指向本类对象 ArrayList a = new ArrayList();
Collection集合常用方法:
-
boolean add(Object e): 添加元素
-
boolean remove (Object o): 从集合中移除指定的元素
-
void clear(): 清空集合中的元素
-
boolean contains(Object o): 判断集合中是否存在指定的元素
-
boolean isEmpty(): 判断集合是否为空(集合存在,没有元素), 如果集合为空, 那么返回true, 如果集合不为空 false
-
int size(): 返回集合中元素的数量,返回集合的长度。
-
Object[] toArray(): 返回集合的对象的数组
代码:
public static void main(String[] args) {
// 1. 创建出一个集合
Collection c = new ArrayList();
// 2. boolean add(Object e): 添加元素
c.add("a");
c.add("hello");
c.add("b");
System.out.println(c);// [a, hello, b]
// 4. boolean contains(Object o): 判断集合中是否存在指定的元素
System.out.println(c.contains("hello"));// true
System.out.println(c.contains("he"));// false
// 5.boolean isEmpty(): 判断集合是否为空(集合存在,没有元素), 如果集合为空, 那么返回true, 如果集合不为空 false
System.out.println(c.isEmpty());// false
// 3. boolean remove (Object o): 从集合中移除指定的元素
c.remove("a");
System.out.println(c);// [hello, b]
//6. int size(): 返回集合中元素的数量,返回集合的长度。
System.out.println(c.size());// 2
// 4. void clear(): 清空集合中的元素
c.clear();
System.out.println(c);// []
// boolean isEmpty(): 判断集合是否为空(集合存在,没有元素), 如果集合为空, 那么返回true, 如果集合不为空 false
System.out.println(c.isEmpty());// true
//6. int size(): 返回集合中元素的数量,返回集合的长度。
System.out.println(c.size());// 0
System.out.println("-------------------");
// 7. Object[] toArray(): 返回集合的对象的数组
Object[] objArr = c.toArray();
// 通过遍历数组相当于在遍历集合中元素内容
for(int index = 0; index < objArr.length; index++){
Object obj = objArr[index];
String s = (String)obj;
System.out.println(s);
}
单列集合的遍历
迭代器的遍历
迭代: 更新换代, 从一个到下一个概念, 迭代相当于遍历含义
迭代器 : 专门对于单列集合进行遍历对象, 称为的迭代器
-
Iterator iterator(): 返回此集合中元素的迭代器,通过集合对象的iterator()方法得到
方法返回值类型Iterator接口
Iterator中的常用方法:
- boolean hasNext(): 判断当前位置是否有元素可以被取出
- E next(): 获取当前位置的元素,将迭代器对象移向下一个索引位置
- void remove(): 删除迭代器对象当前指向的元素
while(it.hasNext()){
Object obj = it.next();
Integer i = (Integer)obj;
System.out.println(i + 1);
// 表示将目前正在迭代的元素从集合中删除
it.remove();
}
增强for(foreach)遍历
- 格式:
for(集合/数组中元素的数据类型 变量名 : 集合/数组名){
// 已经将当前遍历到的元素封装到变量中了,直接使用变量即可
}
代码:
for(int a : arr){
System.out.println(a);
}
有序单列集合List
List集合是Collection接口的子接口,其下有两个常用实现类分别为 ArrayList 和 LinkedList
List集合的特有方法:
-
void add(int index,E element): 在此集合中的指定位置插入指定的元素
-
E remove(int index): 删除指定索引处的元素,返回被删除的元素
-
E set(int index,E element): 修改指定索引处的元素,返回被修改的元素
-
E get(int index):返回指定索引处的元素
List集合特有的索引和get方法结合遍历方式
for(int index= 0; index < li.size(); index++){
System.out.println(li.get(index));
}
并发修改异常的解决办法
ConcurrentModificationException 并发修改异常
-
通过for循环遍历集合,在遍历过程中可以进行添加和删除元素
-
使用迭代器中的remove()方法
-
使用ListIterator listIterator()返回列表中的列表迭代器(按适当的顺序)。
– add(E e) 添加元素
– remove() 移除元素
数据结构之栈和队列
栈
栈: stack,又称堆栈 先进后出
压栈:就是存元素
弹栈:就是取元素
队列
queue,简称队 先进先出
队列的入口、出口各占一侧
数据结构之数组和链表
数组: ArrayList
查找元素快 增删元素慢
链表:linked list,由一系列结点node(链表中每一个元素称为结点)组成
查找元素慢 增删元素快
ArrayList和LinkedList
ArrayList集合:
查询快, 增删慢
LinkedList
方便元素添加、删除的集合
public void addFirst(E e):将指定元素插入此列表的开头。
public void addLast(E e):将指定元素添加到此列表的结尾。
public E getFirst():返回此列表的第一个元素。
public E getLast():返回此列表的最后一个元素。
public E removeFirst():移除并返回此列表的第一个元素。
public E removeLast():移除并返回此列表的最后一个元素。