本质
数据类型的参数化
我们可以把 泛型 理解为数据类型的一个 占位符(形式参数) ,即告诉 编译器 在调用泛型时必须传入实际类型
Collection接口_List接口_ArrayList常用方法

add() 向容器中添加元素
size() 返回元素个数
contains() 判断元素是否存在
remove() 容器中存放的是地址,移除的时候是把 地址 删掉,但是对象还是存在
clear() 移除所有元素
package sc.sxt.collection;import java.util.ArrayList;import java.util.Collection;/*** 测试Collection接口中的方法** @author DYQ**/public class TestList {public static void main(String[] args) {Collection c = new ArrayList<>();System.out.println(c.size()); // 0System.out.println(c.isEmpty()); // true//add()向容器中添加元素c.add("高老大");c.add("高老二");System.out.println(c); // [高老大, 高老二]//size() 返回元素个数System.out.println(c.size()); // 2//contains() 判断元素是否存在System.out.println(c.contains("高老大"));// trueSystem.out.println(c.contains("高老五"));// falseObject[] objs = c.toArray();System.out.println(objs); // [Ljava.lang.Object;@4c203ea1c.remove("高老二"); //// 容器中存放的是地址,移除的时候是把地址删掉,但是对象还是存在System.out.println(c); // [高老大]c.clear(); // 移除所有元素System.out.println(c); // []}}
操作多个List_并集和交集(多个容器操作
addAll() 将另一个集合中所有元素都加进来
removeAll() 删除两个集合相同的部分
retainAll() 取交集
list01.containsAll(list02) 1的集合是否包含2集合中所有的元素
package sc.sxt.collection;import java.util.ArrayList;import java.util.List;public class TestList01 {public static void main(String[] args) {text02();}public static void text02() {List<String> list01 = new ArrayList<>();//Collection <String> list01 = new ArrayList<>();list01.add("aa");list01.add("bb");list01.add("cc");List<String> list02 = new ArrayList<>();list02.add("aa");list02.add("dd");list02.add("ee");System.out.println("list01:" + list01);// list01:[aa, bb, cc]// addAll()将另一个集合中所有元素都加进来// list01.addAll(list02);// System.out.println("list01.addAll:" + list01);// list01:[aa, bb, cc, aa, dd, ee]// removeAll()删除两个集合相同的部分// list01.removeAll(list02);// System.out.println("list01.removeAll:" + list01);// list01.removeAll:[bb, cc]// 取交集// list01.retainAll(list02);// System.out.println("list01.retainAll:" + list01); //list01.retainAll:[aa]// list01.containsAll(list02) 1的集合是否包含2集合中所有的元素System.out.println(list01.containsAll(list02)); //false}}
List
//Collection
List可以换成Collection
索引和顺序相关方法
List 是有序、可重复的容器
有序 :List每个元素都有索引标记,可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素
可重复 :List允许加入重复的元素。更确切的讲,List通常允许满足e1.equals(e2)的元素重复加入容器
List接口的实现类有三个:ArrayList、LinkedList、Vector
add(int index , E e) 在索引位置处添加一个新的元素
remove(int index) 将某个位置的元素删除
set(int index , E e) 将某个位置的元素替换(修改)成另一个元素
get(int index) 返回某个位置的元素
indexOf(E e) 返回第一个符合的元素的位置
lastIndexOf(E e) 返回最后一个符合的元素的位置
package sc.sxt.collection;import java.util.ArrayList;import java.util.List;public class TestList01 {public static void main(String[] args) {text03();}public static void text03() {List<String> list = new ArrayList<String>();list.add("A");list.add("B");list.add("C");list.add("D");System.out.println(list);// [A, B, C, D]// 在索引位置处添加一个新的元素list.add(2, "dyq");System.out.println(list);// [A, B, dyq, C, D]// 将某个位置的元素删除list.remove(2);System.out.println(list);// [A, B, C, D]// 将某个位置的元素替换(修改)成另一个元素list.set(2, "高老二");System.out.println(list); // [A, B, 高老二, D]// 返回某个位置的元素System.out.println(list.get(2)); // 高老二list.add("C");list.add("B");list.add("A");System.out.println(list); // [A, B, 高老二, D, C, B, A]// 返回第一个符合的元素的位置System.out.println(list.indexOf("B")); // 1//返回最后一个符合的元素的位置System.out.println(list.lastIndexOf("B")); //5}}
Collections工具类
和Collection接口是两码事C
Collections.shuffle(list); // 随机排列list中的元素
Collections.reverse(list); // 逆序排序
Collections.sort(list); // 按照递增方式排序。
Collections.binarySearch(list, “张三”); 二分法查找是否有某个元素,没找到就返回一个负的索引值
package sc.sxt.collection;import java.util.ArrayList;import java.util.Collections;import java.util.List;/*** Collections辅助类使用** @author DYQ**/public class TestCollections {public static void main(String[] args) {List<String> list = new ArrayList<String>();for (int i = 0; i < 10; i++) {list.add("gao:" + i);}System.out.println(list);Collections.shuffle(list); // 随机排列list中的元素System.out.println(list);Collections.reverse(list); // 逆序排序System.out.println(list);Collections.sort(list); // 按照递增方式排序。System.out.println(list);// 二分法查找是否有某个元素System.out.println(Collections.binarySearch(list, "张三")); // -11// 没找到就返回一个负的索引值System.out.println(Collections.binarySearch(list, "gao:1")); //1}}[gao:0, gao:1, gao:2, gao:3, gao:4, gao:5, gao:6, gao:7, gao:8, gao:9][gao:0, gao:1, gao:6, gao:3, gao:9, gao:4, gao:8, gao:2, gao:7, gao:5][gao:5, gao:7, gao:2, gao:8, gao:4, gao:9, gao:3, gao:6, gao:1, gao:0][gao:0, gao:1, gao:2, gao:3, gao:4, gao:5, gao:6, gao:7, gao:8, gao:9]-111
