集合进阶
Collection集合
在java.util包下,没有具体的的实现类,必须使用子接口比如set和list实现
Collection<String> c = new ArrayList<String>();//创建collection集合的对象
c.add("Hello");//添加元素 boolean add(E e)
常用方法
c.add("Hello");//添加元素 boolean add(E e)
sout(c.add("Hello"));//返回boolean类型 是否添加成功啥的//add方法永远返回true
c.remove("Hello")//移除元素
sout(c.remove("Hello"));//返回boolean类型 是否移除成功啥的//remove方法移除成功返回true,失败返回false
c.clear()//清空集合中所有元素
c.contains("Hello")//判断集合中是否存在指定元素
sout(c.contains("Hello"));//返回boolean类型 是否存在//contains方法存在返回true,不存在返回false
c.isEmpty()//判断集合是否为空集合
sout(c.isEmpty());//返回boolean类型 是否为空//isEmpty方法集合为空返回true,集合不为空返回false
c.size()//判断集合长度
alt+7 打开一个窗口可以看到类的所有信息
集合的遍历
Iterator:迭代器,集合的专用遍历方式
Iterator<String> it = c.iterator();//返回的是Iterator的具体的实现类Itr的对象,通过多态的方式得到的Itr的对象
it.next();//返回迭代中的下一个元素
it.hasNext();//在获取元素之前首先判断有没有元素 如果有就继续//如果迭代中具有更多元素 返回true
使用步骤
案例
List集合
在java.util包下,有序,存储和取出元素一致,存储的元素可以重复
特有方法
List<String> list = new ArrayList<String>();//创建List集合的对象
list.add("Hello");//添加元素 boolean add(E e)
list.add(1,"Hello");//在索引1位置添加元素hello,原来1索引位置元素向后移动一位
list.remove(index:1);//删除在索引1位置元素,**返回被删除的元素**
sout(list.remove(index:1));//输出被删除的元素
list.set(1,"Hello");//修改在索引1位置元素,修改为hello,返回被修改的元素
sout(list.set(index:1));//输出被修改的元素
list.get(index:1);//返回/获取在索引1位置元素
案例
并发修改异常
通过迭代器遍历添加元素会产生并发修改异常,因为实际修改集合次数和预期修改集合次数不一致
所以通过for循环遍历添加元素
其实就是迭代器是原来数组的,添加元素数组已经改变了就会显示异常,为了防止无限迭代
Listlterator 列表迭代器
是list集合特有的迭代器,可以从后面往前遍历
hasPrevious、previous逆向遍历,倒着输出
list.add();
在源码中ListItr把实际修改值赋给了预期修改值,所以不会出现并发修改异常
增强for循环
简化数组和Collection集合的遍历,内部其实是一个Iterator迭代器
案例
数据结构
是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素的混合
栈
后进先出,先进后出
队列
先进先出,后进后出,因为入队列和出队列的方向在两端
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。