本质
数据类型的参数化
我们可以把 泛型 理解为数据类型的一个 占位符(形式参数) ,即告诉 编译器 在调用泛型时必须传入实际类型
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()); // 0
System.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("高老大"));// true
System.out.println(c.contains("高老五"));// false
Object[] objs = c.toArray();
System.out.println(objs); // [Ljava.lang.Object;@4c203ea1
c.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]
-11
1