集合体系结构
Collection 代表单列集合,每个元素(数据)只包含一个值
Map 代表双列集合,每个元素包含两个值(键值对)
Collection 框架集合
Collection 概述
List 系列集合:添加的元素是有序、可重复、有索引
- ArrayList、LinekdList:有序、可重复、有索引
Set 系列集合:添加的元素是无序、不重复、无索引
- HashSet:无序、不重复、无索引
- LinkedHashSet:有序、不重复、无索引
- TreeSet:按照大小默认升序排序、不重复、无索引
Collection 常用方法
Collection 是单列集合的祖宗,它的方法是全部单列集合都会继承的
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;public class Test {public static void main(String[] args) {Collection<String> c = new ArrayList<>(); // 多态写法// 1. 添加元素,添加成功返回truec.add("java1");c.add("java1");c.add("java2");c.add("java2");c.add("java3");System.out.println(c); // [java1, java1, java2, java2, java3]// 2. 清空集合的元素
// c.clear();// 3. 判断集合是否为空System.out.println(c.isEmpty()); // false// 4. 获取集合的大小System.out.println(c.size()); // 5// 5. 判断集合中是否包含某个元素System.out.println(c.contains("java1")); // true// 6. 删除某个元素:如果有多个重复元素默认删除最前面的第一个System.out.println(c.remove("java1")); // trueSystem.out.println(c); // [java1, java2, java2, java3]// 7. 把集合转换为数组Object[] arr = c.toArray();System.out.println(Arrays.toString(arr)); // [java1, java2, java2, java3]String[] arr2 = c.toArray(new String[c.size()]);System.out.println(Arrays.toString(arr)); // [java1, java2, java2, java3]// 8. 把一个集合的全部数据倒入到另一个集合中去Collection<String> c1 = new ArrayList<>();c1.add("java11");c1.add("java22");Collection<String> c2 = new ArrayList<>();c2.add("java33");c2.add("java44");c1.addAll(c2);System.out.println(c1); // [java11, java22, java33, java44]System.out.println(c2); // [java33, java44]}
}
Collection 的遍历方式
迭代器
迭代器是用来遍历集合的专用方式(数组没有迭代器),在 Java 中迭代器的代表是 Iterator
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class Test {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("Jack");c.add("Peter");c.add("Tomato");c.add("wang");System.out.println(c); // [Jack, Peter, Tomato, wang]// 使用迭代器遍历集合// 1. 从集合对象中获取迭代器对象Iterator<String> iter = c.iterator();
// System.out.println(iter.next()); // Jack
// System.out.println(iter.next()); // Peter
// System.out.println(iter.next()); // Tomato
// System.out.println(iter.next()); // wang
// System.out.println(iter.hasNext()); // 判断当前迭代位置是否有元素存在 false
// System.out.println(iter.next()); // 出现异常 NoSuchElementException// 2. 结合循环与迭代器,进行集合的遍历while (iter.hasNext()) {System.out.println(iter.next());}}
}
增强 for
"增强for"可以用来遍历集合或者数组,"增强for"遍历集合,本质就是迭代器遍历集合的简化写法
import java.util.ArrayList;
import java.util.Collection;public class Test {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("Jack");c.add("Peter");c.add("Tomato");c.add("wang");System.out.println(c); // [Jack, Peter, Tomato, wang]// 使用增强for遍历集合,或者遍历数组!!for (String ele : c) {System.out.println(ele);}int[] arr = {1, 2, 3, 4, 5};for (int num : arr) {System.out.println(num);}}
}
lambda 表达式
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;public class Test {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("Jack");c.add("Peter");c.add("Tomato");c.add("wang");System.out.println(c); // [Jack, Peter, Tomato, wang]// 方式一(未经过简化)c.forEach(new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}});// 方式二(lambda简化版)
// c.forEach(s -> System.out.println(s));c.forEach(System.out::println);}
}