目录
1.单例集合框架结构
** Collection接口: **单例集合,用来存储一个个对象,是List、Set和Queue接口的父接口
**List接口:**存储有序的可重复的数据
ArrayList、LinkedList、Vector
**ArrayList:**作为List接口的主要实现类,线程不安全,效率高,查找快、增删慢;底层使用Object[] elementDat存储
**LinkedList:**线程不安全,查找慢、增删快,底层使用双向链表存储,效率高
**Vector:**线程安全,效率低,底层使用Object[] elementDat存储(不推荐使用)
1.1 Collection接口的常用方法
-
添加
add(Object obj) : 添加元素
addAll(Collection c) : 添加集合中所有的元素
-
删除
clear() : 清除集合里的所有元素,长度变为0
remove(Object obj) :删除指定的元素
removeAll(Collection c) :删除指定集合中的所有元素
-
判断
isEmpty():返回集合是否为空,空为true,否则false
contains(Object obj):返回集合里是否包含指定的元素
ContainsAll(Collection c):返回集合中是否包含指定集合的所有元素
-
获取
seze():集合的大小
Iterator iterator():获取迭代器对象
Collection c1=new ArrayList<>(); c1.add("hello"); c1.add("world"); c1.add("java"); //获取集合的迭代器对象 Iterator i=c1.iterator(); while(i.hasNext()){//是否有下个元素 String s=(String)i.next();//获取下一个元素 System.out.println(s); }
-
其它
Object[] toArray():集合转换成数组
//集合转数组 Object[] obj=c.toArray(); System.out.println(Arrays.toString(obj));
retainAll(Collection c) : 获取两个集合的交集
1.2 List接口
List集合代表一个有序的集合,集合中的每个元素都有对应的顺序索引。List集合允许使用重复的元素,通过索引来访问指定位置的集合元素
1.2.1 常用方法
-
增:add(Object obj)
-
删:remove(int index) / remove(Object obj)
-
改:set(int index,Object ele)
-
查:get(int index)
-
插:add(int index,Object ele)
-
长度:size()
-
遍历:①Iterator迭代器方式
②增强for循环
③普通for循环
List list=new ArrayList(); list.add("aa"); list.add("bb"); list.add("cc"); list.remove(0);//[bb, cc] 删除第一个元素 list.set(0,"AA");//[AA, bb, cc] 将第一个元素修改为AA System.out.println(list.get(2));//cc 获取下标为2的元素 list.add(3,"FF");//[AA, bb, cc, FF] 将FF插入到下标为3处 System.out.println(list); System.out.println(list.size());//获取集合的长度
-
这里重点看遍历的三种方式
①Iterator迭代器方式
Iterator i=list.iterator(); while(i.hasNext()){ String string=(String)i.next(); System.out.println(string); }
②增强for循环
for(Object s:list){ System.out.println(s); }
③普通for循环
for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); }
1.2.2 ArrayList
底层数据结构是数组,查询快,增删慢,线程不安全,效率高
1.2.3 LinkedList
底层数据结构是链表,查询慢,增删快,线程不安全,效率高
特有的方法
- addFirst(E e) : 在最前面添加元素
- addLast(E e) : 在最后面添加元素
- getFirst() : 获取第一个元素
- getLast() : 获取最后一个元素
- E removeFirst() : 移除第一个元素
- E removeLast() : 移除最后一个元素
1.2.4 Vector
底层数据结构是数组,查询快,增删慢,线程安全,效率低(不常用)
特有的方法:
- addElement(E obj): 添加元素
- E elementAt(int index): 在指定下标处对应的元素值
- hasMoreElements(): 是否有更多元素
- nextElement(): 获取下一个元素
1.2.5 Iterator
迭代器,设计模式的一种,主要用于遍历Collection集合中的元素
1.2.6 ListIterator
该方法继承了Iterator,可以正向或者反向遍历集合,且可以在迭代期间添加集合元素
List list=new ArrayList<>();
list.add("hello");
list.add("java");
list.add("world");
ListIterator li=list.listIterator();
while(li.hasNext()){
String s=(String)li.next();
if("java".equals(s)){
//迭代器遍历,迭代器添加
li.add("javaee");
}
}
system.out.println(list);//[hello, java, world, javaee]
成员方法:
boolean hasPrevious(): 是否上一个元素
Object previous(): 获取上一个元素
add(E ele): 添加元素
1.2.7栈Stack
继承了Vector
成员方法
E peek(): 获取栈顶元素
E pop(): 弹栈(获取栈顶元素并移除)
E pust(E e) : 压栈(将元素添加到栈中)