Collection体系
- Collection:代表一组任意类型的对象
- List:有序、有下标、元素可重复
- ArrayList 【重点】
- 数组结构实现,必须要连续空间,查询快、增删慢
- jdk1.2版本,运行效率块、线程不安全
- Vector
- 数组结构实现,查询快、增删慢
- jdk1.0版本,运行
- LinkedList
- 双向链表结构实现,无需连续空间,增删快,查询慢
- Set
Collection父接口
特点:代表一组任意类型的对象
删除时只能靠元素,不能靠下标
常用方法
/**
* @author 伍六七
* @date 2022/8/12 19:37
*/
public class collection_demo {
public static void main(String[] args) {
//0创建集合
Collection collection = new ArrayList();
System.out.println(collection);//[]
//1添加元素
collection.add("1");
collection.add("1");
collection.add("2");
System.out.println(collection);//[1, 1, 2]
//2删除元素
collection.remove("1");
System.out.println(collection);//[1, 2]
collection.clear();//[]
System.out.println(collection);
//3遍历
//增强遍历
for(Object o : collection){
System.out.println(o);
}
//迭代器
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
String o = (String) iterator.next();
System.out.println(o);
}
//4判断
System.out.println(collection.contains("1"));//true
System.out.println(collection.isEmpty());//false
}
}
JDK的集合工具类
Collection的集合工具类
/**
* @author 伍六七
* @date 2022/8/13 18:24
*/
public class collections_tool {
public static void main(String[] args) {
ArrayList collection = new ArrayList();
collection.add(4);
collection.add(2);
collection.add(3);
collection.add(1);
ArrayList collection2 = new ArrayList();
collection2.add(5);
collection2.add(5);
collection2.add(5);
collection2.add(5);
ArrayList list = new ArrayList();
ArrayList list2 = new ArrayList();
list2.add(2);
list2.add(2);
list.addAll(collection);
//将指定元素添加到指定集合
Collections.addAll(collection,1,2,3,4);
System.out.println(collection);
//最大-比较器可以作为第二个参数决定规则
System.out.println(Collections.max(collection));
//最小-比较器可以作为第二个参数决定规则
System.out.println(Collections.min(collection));
//排序
Collections.sort(list);
System.out.println("list"+list);
//交互指定位置元素
Collections.swap(list,2,3);
System.out.println(list);
//指定元素替换所有元素,初始化
Collections.fill(list,1);
System.out.println(list);
//返回指定元素的个数
System.out.println(Collections.frequency(collection, 1));
//两集合没有相同元素,返回true
System.out.println(Collections.disjoint(collection, collection2));
//将列表中指定值的所有元素变为另一个
Collections.replaceAll(list,1,"s");
System.out.println(list);
//将列表B的元素覆盖列表A的元素,B比A元素少前提下
Collections.copy(list,list2);
System.out.println(list2);
System.out.println(list);
//线程安全(不是绝对的线程安全),它是将map的每个方法都加了同步(都加了虚拟锁机制)
//但是多个方法合在一起还是会线程不安全,建议加上同步机制
Collections.synchronizedList(new ArrayList<>());
Collections.synchronizedMap(new HashMap<>());
Collections.synchronizedSet(new HashSet<>());
}
}