目录
1.Collection接口
集合是用来存放对象的数据结构,而且长度可变,可以存放不同类型的对象,并且还提供了一组操作成批对象的方法,Collection接口层次结构中的跟接口,接口不能直接使用,但是该接口提供了添加元素/删除元素/管理元素的父接口公共方法
由于List接口与Set接口都继承了Collection接口,因此这些方法对于List集合和Set集合是通用的
2.集合的继承结构
Collection接口
3.Collection方法
containAll()是否包含指定集合中所有元素
removeAll()删除集合中的其他集合元素
retainAll()取集合间的公共元素
4.iterator()遍历集合
1.获取集合的迭代器 c.iterator();
2.判断集合中是否有下一个可迭代元素 hasNext();
3.获取当前迭代到的元素 next();
Iterator<Integer> it=c.iterator();
while(it.hasNext()){
Integer num=it.next();
System.out.println(num)
}
5.List接口
1.元素都有下标
2.数据是有序的
3.允许存放重复的数据
6.集合迭代方式
//测试集合的迭代
/**集合的迭代方式:
* 1.for循环
* 2.高效for循环
* 3.iterator
* 4.listIterator
* */
//方式一:因为List集合是有序的,元素有下标的,所以可以根据下标进行遍历
//从哪开始:0 到哪结束:list.size()-1 如何变化++
for(int i = 0;i<list.size();i++){
//根据本轮循环遍历到的索引值获取对应的集合元素
System.out.println(list.get(i));
}
System.out.println("************方式一*************");
//方式二:因为普通for循环遍历效率低,语法复杂,所以使用高效for来遍历
//格式for(本轮遍历到的元素类型 元素名 :要遍历的内容名){循环体}
for( String s : list){
System.out.println(s);
}
System.out.println("************方式二*************");
//方式三:从父接口中继承过来的迭代器iterator
//1.获取对应的迭代器对象
Iterator<String> it = list.iterator();
//2.通过刚刚获取到的迭代器循环迭代集合中的所有元素
while(it.hasNext()){//判断是否仍有下一个元素可以迭代
System.out.println(it.next());//打印当前获取到的元素
}
System.out.println("************方式三*************");
/**方式四:listIterator属于List接口特有的迭代器
* Iterator<E>--父接口--hasNext() next()
* ListIterator<E>--子接口--除了父接口的功能以外
* 还有自己的特有功能,比如逆序遍历,添加元素等等,但是不常用
* public interface ListIterator<E>extends Iterator<E>
* */
ListIterator<String> it2 = list.listIterator();
while(it2.hasNext()){
System.out.println(it2.next());
}
System.out.println(list);
System.out.println("listIterator的逆序遍历:");
ListIterator<String> it3 = list.listIterator();
while(it3.hasNext()){//判断是否有下一个元素可迭代
System.out.println(it3.next());//打印当前迭代到的元素
if(!it3.hasNext()){//直到迭代器没有下一个元素可迭代--到最后了
System.out.println("开始逆序迭代:");
while (it3.hasPrevious()){//判断是否有上一个元素可迭代
System.out.println(it3.previous());//打印获取到的上一个元素
}
break;//终止循环,不然会一直从头到尾,再从尾到头迭代
}
}
7.ArrayList
1.存在java.util包中
2.内部是用数组结构存放数据,封装数组的操作,每个对象都有下标
3.内部数组默认的初始容量是10,如果不够会以1.5倍的容量增长
4.查询快,增删效率会低
8.LinkedList
链表,两端效率高,底层是链表实现的
常用方法
void addFirst(E e) 添加首元素
void addLast(E e) 添加尾元素
E getFirst() 获取首元素
E getLast() 获取尾元素
E element() 获取首元素
E removeFirst() 删除首元素
E removeLast() 删除尾元素boolean offer(E e) 添加尾元素
boolean offerFirst(E e) 添加首元素
boolean offerLast(E e) 添加尾元素
E peek() 获取首元素
E peekFirst() 获取首元素
E peekLast() 获取尾元素
E poll() 返回并移除头元素
E pollFirst() 返回并移除头元素
E pollLast() 返回并移除尾元素