2017-4-26:学习笔记(集合)
来源:互联网 发布:微信表白墙源码 编辑:程序博客网 时间:2024/06/11 16:37
集合
Collection
Collection是所有容器的顶层接口,包含容器中最共性的内容
- 集合类关系图
集合类的方法
- Collection coll = new ArrayList();
- 接口的多态性调用
- ArrayList是有序集合
- boolean coll.add();
- boolean coll.contians(Object obj);
- 判断对象是否存在于集合中
- 存在返回true
- 不存在返回false
- 集合存任意对象,因此参数为Object
- void coll.clear();
- 集合元素虽然被清空,但是集合本身仍然存在
- boolean coll.remove(Object obj);
- 删除集合中第一个符合条件的元素
- 如果存在的话,移除集合中的单个实例
- int coll.size();
- 返回集合中元素的个数
- Object [] = coll.toArray();
- 返回包含此Collection中所有元素的数组
三种长度表示方式
- 数组
- .length
- 数组专用
- 字符串
- .length()
- 集合
- .size()
迭代器
Iterator
必要性
- 容器内部是不一样的
- 存储的方式是不一样的
- 取出的方式也是不一样的
- 为了避免这种区别,Java制订了集合取出元素的标准
- 作用就是遍历集合,屏蔽了集合间的不同
Iterator接口
- 对Collection进行迭代的迭代器
- 三个抽象方法
- boolean hasNext()
- E next()
- void remove()
实现过程
- 集合中的迭代器
- 获取集合中元素方式
- 接口 Iterator : 两个抽象方法
- boolean hasNext() 判断集合中还有没有可以被取出的元素,如果有返回true
- next() 取出集合中的下一个元素
- Iterator接口,找实现类.
- Collection接口定义方法
ArrayList 重写方法 iterator(),返回了Iterator接口的实现类的对象
- 使用ArrayList集合的对象
- Iterator it =array.iterator(),运行结果就是Iterator接口的实现类的对象
- it是接口的实现类对象,调用方法 hasNext 和 next 集合元素迭代
注意
- 最开始的时候指针在 -1 位
集合迭代中的转型
- 集合中元素类型不确定时
- 迭代器的类型也就不确定
- 此时迭代器调用next()方法返回的是Object类型数据
- 这样进行数据转换时会抛异常
- 因此在集合上需要加上泛型
增强for循环
- 增强的for循环是JDK1.5之后才有的新特性
- JDK1.5之后出现了新接口
- 接口在java.lang.Iterable中
- Collection继承了上述的iterable接口
- 这个接口的功能:允许实现这个接口的对象成为”foreach”的目标,也就是实现增强for循环
- 增强for不仅可以循环集合,还可以循环数组
格式
for (数据类型 变量名:数组或集合) { sop(变量);}
- 举例
public static void function() { int [] arr = {1, 3, 5, 6, 7, 9, 10}; for (int i : arr) { System.out.println(i + 1); }}
- 上述代码的 i 先进入 0 索引中,然后 i = arr[0];
分析
- 好处
- 代码少
- 方便对容器进行遍历
- 弊端
- 不能操作容器里面的元素(操作元素是要由索引的)
伪泛型
- Java中的泛型是伪泛型
- 只是一个编译的手段
- 编译后的字节码文件是没有泛型的
- 但是这样仍然能保证安全性
泛型的通配符 (?)
- * 是系统中的通配符
- 在遍历时想同时遍历两个集合
- 定义方法,可以同时迭代两个集合
- 参数
- 不能写两种集合的任意一种
- 写两个集合共同实现的接口
- 泛型的通配可以匹配所有的泛型
import java.util.*;public class MyIterator { public static void main(String[] args) { List<String> list = new ArrayList<String>(); Set<Integer> set = new HashSet<Integer>(); String [] string = {"aaa", "bbb", "ccc", "ddd"}; Integer [] integer = {1, 2, 3, 4, 5}; for (String poi : string) { list.add(poi); } for (Integer poi : integer) { set.add(poi); } Iterator(list); Iterator(set); } private static void Iterator(Collection<?> collection) { Iterator<?> it = collection.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }}
0 0
- 2017-4-26:学习笔记(集合)
- J2SE学习笔记(4)集合框架
- swift学习笔记(4)-集合类型
- Java学习笔记(集合)
- 集合学习笔记(二)
- 集合学习笔记(三)
- 集合学习笔记(一)
- Javase基础学习笔记之集合(4)
- python学习笔记(4)——字典与集合
- Java学习笔记(十)--集合 List集合
- Java学习笔记(十一)--Set集合 Map集合
- Python学习笔记(4)——集合
- java 集合学习笔记4-HashMap TreeMap
- C#学习笔记(八):集合
- MFC集合类学习笔记(1)
- MFC集合类学习笔记(2)
- 集合类的学习笔记(原)
- 【Java学习笔记】集合框架(一)
- SSH框架搭建
- yii2.0初始化
- javascript
- ubuntu 16.04安装php5
- 设计模式之观察者模式
- 2017-4-26:学习笔记(集合)
- Java对日期Date类进行加减运算,年份加减,月份加减
- 求N的所有因子
- oracle中JOB的使用
- display:inline-block;是什么
- http://www.regexr.com/
- 使用Maven报错 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- Unity 地形高度图生成方法
- 如何将java web项目上线/部署到公网