文章目录 什么是集合? Collection的基本使用 接口实现类 Collections工具类 Map接口及其实现类 Map是不是集合? 什么是集合?集合是指具有某种特定性质的具体的或抽象的对象汇总而成的集体,有时集合也称之为容器,java中在util包下存放了所有的基本集合。 集合大致分为List,Set,Map三种类型(还有一种Queue本章不讲解).
Collection的基本使用通过集合的关系图我们可以知道Collection是集合的顶层父类,他定义了集合的基本方法如:
测试: public class Test {public static void main(String[] args) {//定义一个集合并向上转型Collection<String> obj = new ArrayList<>();//1.int size(); 获取集合大小int size = obj.size();//2.boolean isEmpty(); 判断是否为空boolean empty = obj.isEmpty();//3.boolean contains(Object var1); 判断是否包含boolean contains = obj.contains(null);//4.Object[] toArray(); 将集合转换为数组Object[] objects = obj.toArray();//5.boolean add(E var1); 向集合增加元素boolean result = obj.add("Hello World");//6.boolean remove(Object var1); 向集合移除元素boolean remove = obj.remove(null);//7.boolean containsAll(Collection<?> var1); 判断是否包含另一个集合的元素boolean containsResult = obj.containsAll(new ArrayList<>());//8.boolean addAll(Collection<? extends E> var1); 添加一个集合的全部元素boolean addAllResult = obj.addAll(new ArrayList<>());//9.boolean removeAll(Collection<?> var1); 删除一个集合的全部元素boolean removeAllResult = obj.removeAll(new ArrayList<>());//10.void clear(); 清空集合obj.clear();//11.boolean equals(Object var1); 判断是否相同boolean equalsResult = obj.equals(null);//12.default Spliterator<E> spliterator(); 得到该集合的分离器Spliterator<String> spliterator = obj.spliterator();//13.default Stream<E> stream(); 转换为Stream流Stream<String> stream = obj.stream();//14.default Stream<E> parallelStream(); 转换为Stream并行流Stream<String> stringStream = obj.parallelStream();}} 接口实现类到这里我们已经知道了集合的基本用法,那么来看看接口的实现类: List接口:可以看到List接口下有四个较为常见的实现类:
Set接口
Collections工具类同时java也提供了操作集合的工具类Collections,常用API:
测试: package com.xiao.dao;import java.util.*;import java.util.concurrent.CopyOnWriteArrayList;import java.util.stream.Stream;public class Test {public static void main(String[] args) {//定义Collection接口ArrayList<String> obj = new ArrayList<>();//1. 二分搜索找到返回下标没有则返回-1System.out.println(Collections.binarySearch(obj, "1"));//2.public static void reverse(List<?> var0); List中的元素反转Collections.reverse(obj);//3.public static void shuffle(List<?> var0); List中的元素随机重排Collections.shuffle(obj);//4.public static <T> Collection<T> synchronizedCollection(Collection<T> var0); 将Collection转换为安全的集合Collection<String> strings = Collections.synchronizedCollection(obj);//5.public static <T> Set<T> synchronizedSet(Set<T> var0); 将Set集合转换为安全的Set集合Set<Object> objects = Collections.synchronizedSet(new HashSet<>());//6.public static <T> List<T> synchronizedList(List<T> var0); 将List转换为安全的ListList<String> strings1 = Collections.synchronizedList(obj);//7.public static <K, V> Map<K, V> synchronizedMap(Map<K, V> var0); 将Map转换为安全的MapMap<Object, Object> objectObjectMap = Collections.synchronizedMap(new HashMap<>());//8.public static <T> Iterator<T> emptyIterator(); 获取空迭代器Iterator<Object> objectIterator = Collections.emptyIterator();}} Map接口及其实现类
HashMap结构:
HahMap的默认参数为长度16与加载因子为0.75,而现在他的底层实际有两种数据结构一种是链表形式的一种为红黑树: 当16个空间不足以存储(会判断元素数量是否大于HashMap的阈值如果大于则扩容)这时,就会调用resize ()方法通过加载因子扩容,最大是为1073741824个空间。 Map是不是集合?在初学时很容易误以为只有实现了Collection接口的才是集合,而然并不是这样的,在
|
|