小东吖 之 java Collection集合和迭代器
来源:互联网 发布:网络大电影受众人群 编辑:程序博客网 时间:2024/05/24 05:43
一.Collection集合
数组: 存储同一种数据类型的集合容器.
数组的特点:
1. 只能存储相同数据类型的数据
2. 一旦给定了长度,数组长度被固定了,不能改变
3. 数组中的元素与元素之间的内存地址是连续的
注意: Object类型的数组可以存储任意类型的数据
集合:集合是存储对象数据的集合容器。
集合比数组的优势:
1. 集合可以存储任意类型的对象数据,数组只能存储同一种数据类型 的数据。
2. 集合的长度是会发生变化的,数组的长度是固定的。
注意:
集合虽然说可以储存任意类型的对象数据 是因为可以通过自动装箱保存基本数据类型
Collection 单例集合的根接口
List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。 ArrayList 底层是维护了一个Object数组实现的 特点: 查询速度快,增删慢。 LinkedList 底层是使用了链表数据结构实现的 特点: 查询速度慢,增删快。 Vector(了解即可) 底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。
Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。HashSet 底层是使用了哈希表来支持的,特点: 存取速度快. TreeSet 如果元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储。
Collection接口中的方法:
1.测试collection接口中的方法
// 首先定义Collection接口的// Collection是个接口 要遵循多态的方式 去创建实现类的对象Collection collection = new ArraryList();// 添加(返回值是布尔类型的)add() 添加成功返回true 否则返回falseaddAll(Collection c) 把一个集合 的元素添加到另外一个集合中去。// 添加一个字符串boolean b1 = collection.add("a");// 添加数字boolean b2 = collection.add(60);// 添加对象boolean b1 = collection.add(new Persom("小东吖",20) );System.out.println(collection);
结果
[a, 60]
2.addAll 两个集合 第一个集合传到 第一个
// 定义第一个集合 Collection c1 = new ArrayList(); // 定义第二个集合 Collection c2 = new ArrayList(); c1.add("a"); c1.add("b"); // 把传入的集合中所有的元素 添加到第一个集合中 c2.add("q"); c2.add("w"); c2.add("e"); //c1.addAll(c2); // 把一个集合当成一个元素传入到c1集合中 c1.add(c2); System.out.println(c1);为什么能装基本数据类型?比如 add(60)Object obj = new Integer(100);其中有个自动装箱的操作
结果
[a, b, [q, w, e]]// 这里是把一个集合当成一个元素添加进去的
3.测试一些方法
Collection collection = new ArrayList(); collection.add("a"); collection.add("b"); collection.add("c"); collection.add("d"); // 测试方法 判读这个集合是不是空的 boolean b1 = collection.isEmpty(); System.out.println(b1); // 获取集合长度 System.out.println(collection.size()); // 是否包含某个元素 boolean b2 = collection.contains("h"); System.out.println(b2); // 删除某个元素 boolean b3 = collection.remove("c"); System.out.println("b3 = " + b3); // 清空集合 collection.clear(); // 打印集合元素 System.out.println(collection);
结果
false4falseb3 = true[]
4.遍历字符串数组
// 遍历字符串集合 Collection collection = new ArrayList(); collection.add("a"); collection.add("b"); collection.add("c"); collection.add("d"); // 将集合转化为数组 Object[] array = collection.toArray(); for (int i = 0; i < array.length; i++) { System.out.println(array[i]); }
结果
abcd
//创建一个集合 添加三个学生禁区 遍历集合 只打印学生姓名// 创建学生的类public class Student { // 私有化成员变量 private String name; private int age; // 构造方法 public Student() { } public Student(String name,int age) { this.age = age; this.name = name; } // set / get 方法 public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } // 直接打印student对象 就可以调用toString方法 @Override public String toString() { return "Student [name=" + name + ", age=" + age + "]"; }}// 遍历集合public static void main(String[] args) { Collection collection = new ArrayList(); // 添加三个对象 collection.add(new Student("小东吖", 12)); collection.add(new Student("小东", 14)); collection.add(new Student("哈哈", 15)); // // 强转数组类型 不能把数组中的元素强转 Object[] array = collection.toArray(); for (int i = 0; i < array.length; i++) { // 数组遍历中要把数组中每一个对象(元素)都进行向下转型 // 向下转型. Student student = (Student)array[i]; System.out.println(student.getName()); } }
结果
小东吖小东哈哈
5.判断是否全部包含
containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。 `````Collection collection1 = new ArrayList(); Collection collection2 = new ArrayList(); collection1.add("q"); collection1.add("w"); collection1.add("r"); collection2.add("c"); collection2.add("q"); boolean containsAll = collection1.containsAll(collection2); System.out.println(containsAll);
结果
false
6.removeAll(Collection
移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
// 删除重复的 Collection collection1 = new ArrayList(); Collection collection2 = new ArrayList(); collection1.add("q"); collection1.add("w"); collection1.add("r"); collection2.add("r"); collection2.add("s"); // 判断全部包含时 是可以有重复元素的 也算包含 collection1.removeAll(collection2); System.out.println(collection1);
[q, w]
7.retainAll(Collection
仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
Collection collection1 = new ArrayList(); Collection collection2 = new ArrayList(); collection1.add("q"); collection1.add("w"); collection1.add("r"); collection2.add("y"); collection2.add("w"); // c1 转换成 是把两个集合的交集取出来 // 如果c1没变 就返回true // c1改变了 返回 false boolean retainAll = collection1.retainAll(collection2); System.out.println(collection1); System.out.println(retainAll);
二.集合迭代器
迭代器(Iterator)
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象
(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。
注意:iterator()方法是java.lang.Iterable接口,被Collection继承。
(2) 使用next()获得序列中的下一个元素。
(3) 使用hasNext()检查序列中是否还有元素。
(4) 使用remove()将迭代器新返回的元素删除。
1.迭代器应用:
Collection collection = new ArrayList(); collection.add("a"); collection.add("b"); // 获取集合中迭代器 Iterator iterator = collection.iterator(); // 判断有没有下一个元素 boolean b1 = iterator.hasNext(); // 获取下一个元素 Object next = iterator.next(); System.out.println(b1); System.out.println(next); }
结果
truea
2.用迭代器遍历集合
Collection collection = new ArrayList(); // 迭代器遍历时 相当于有一个指针 指向你的集合 // 每next一次 指针向后移动 // 最终遍历完成 collection.add("a"); collection.add("b"); collection.add("c"); collection.add("d"); //fun1(collection); // 使用迭代器循环遍历数组 // 获取集合中迭代器 Iterator iterator = collection.iterator(); // 判断是否有下一个元素 while (iterator.hasNext()) { // 获取集合中元素 Object next = iterator.next(); System.out.println(next); }
结果
abcd
- 小东吖 之 java Collection集合和迭代器
- Java集合之Collection和Map
- Java集合之Collection
- Java集合之Collection
- java集合之Collection
- Java之集合Collection
- 四大名捕----JAVA集合之Collection
- Java SE 之 Collection集合
- Java 入门 之 集合 Collection
- java集合框架之Collection
- Java之集合框架Collection
- Java集合之Collection接口
- Java集合之Collection接口
- JAVA集合框架之Collection
- Java集合之collection体系
- Java基础学习记录之集合(Collection和Map)
- java之集合Collection详解之2
- java之集合Collection详解之3
- Ubuntu 16.04安装手动分区配置
- 【dsu on tree】Codeforces600E[Lomsat gelral]题解
- JAVA 集合 迭代器
- 与系统函数distance重名的问题
- 开门见“神” HNUST 1886 ( 区间DP )
- 小东吖 之 java Collection集合和迭代器
- leetcode 2 Add Two Numbers
- HDOJ 1002 A + B Problem II 高精度的A+B问题
- SSL P1194 最优乘车 题目
- 关于AD采样前级电路的分析与设计
- 软件工程第六章软件测试
- js表单的登录时候遇见的问题
- 排序 修改 删除 添加
- python 学习笔记(五)函数--定义函数