0
点赞
收藏
分享

微信扫一扫

集合——java学习笔记

编程练习生J 2022-04-29 阅读 60

集合,又称容器,用于存储对象(集合的元素),且长度可变,具体可以是集合类的对象,也可以是集合接口的对象(多态)。

在这里插入图片描述

Collection接口

collection接口的动态方法

  1. 创建对象:Collection<类型实参> col = new ArrayList<>(); //多态
  2. 引用对象的方法
  • col.add(元素) == 添加元素到集合,成功则返回true
  • col.remove(元素) == 删除集合中的元素,成功则返回true
  • col.clear; == 清空集合中的元素
  • col.contains(元素) == 判断集合中是否包含参数元素,是则返回true
  • col.isEmpty() == 判断集合是否为空,是则返回true
  • col.size() == 获取集合的大小(元素个数)
  • col.toArray() == 返回包含集合内容的数组

List接口

List接口的动态方法

  1. 创建对象:List<类型实参> lis = new ArrayList<>(); //多态
  2. 引用对象的方法
  • lis.add(索引,元素) == 添加元素到集合指定索引(后面元素索引顺延),无返回值
  • lis.get(索引) == 返回集合指定索引的元素
  • lis.remove(索引) == 移除指定索引的元素,并返回该元素
  • lis.set(索引, 元素) == 修改指定索引的元素,并返回该新元素

ArrayList类

查询快、增删慢,数据结构是数组。

ArrayList类的动态方法

  1. 创建对象:ArrayList<类型实参> arrayList = new ArrayList<>();
  2. 引用对象的方法
  • arrayList.add(集合元素)==添加集合元素
  • arrayList.get(元素编号)==获取对应元素编号的集合元素// 元素编号从0开始,下同
  • arrayList.remove(元素编号)==移除对应元素编号的集合元素
  • arrayList.size()==集合的大小(元素个数)
  • arrayList.toString()==返回指定集合内容的字符串表示形式,重写了Object类的方法//中括号型式

LinkedList类

查询慢、增删快,数据结构是链表。

LinkedList类的动态方法

  1. 创建对象:LinkedList<类型实参> lin = new LinkedList<>();
  2. 引用对象的方法
  • lin.addFirst(元素) == 在集合的首元素前添加元素
  • lin.addLast(元素) == 在集合的尾元素后添加元素
  • lin.push() == lin.addFirst()
  • lin.getFirst() == 获取集合的首元素
  • lin.getLast() == 获取集合的尾元素
  • lin.removeFirst() == 移除集合的首元素,并返回该元素
  • lin.removeLast() == 移除集合的尾元素,并返回该元素
  • lin.pop() == lin.removeFirst()

Victor类

JDK1.0开始的集合类,数据结构是数组,单线程,其功能已被ArrayList集合类取代(JDK1.2开始)

Set接口

Set接口的动态方法

  1. 创建对象:Set<类型实参> set = new HashSet<>(); //多态
  2. 引用对象的方法:继承Collection接口的方法。

HashSet类

底层是哈希表结构,查询速度非常快。存储数据时,若哈希值不同则直接存储,哈希值相同再比较内容是否相同,若内容不同,则存储,否则不存储。

  1. 创建对象:HashSet<类型实参> set = new HashSet<>(); //多态
  2. 引用对象的方法:实现Collection接口的方法。储存自定义类型元素时,需重写hashCode方法和equals方法。

LinkedHashSet类

HashSet类的子类,底层多了一条储存元素顺序的链表。

  1. 创建对象:LinkedHashSet<类型实参> lhs = new LinkedHashSet<>();
  2. 引用对象的方法:实现Collection接口的方法。储存自定义类型元素时,需重写hashCode方法和equals方法。

TreeSet类

Iterator迭代器接口

迭代器一般用于遍历集合元素

Iterator接口的动态方法

  1. 创建对象:Iterator<类型实参> ite = col.iterator(); //使用Collection接口的方法获取迭代器对象,赋值给Iterator对象(多态)
  2. 引用对象的方法
  • ite.hasNext() //如果迭代具有更多元素,则返回 true
  • ite.next() //返回迭代器的下一个元素

数据结构

栈:入口和出口在集合的同一侧,先进后出。

队列:入口和出口在集合的两侧,先进先出。

数组:查询快(地址连续),增删慢(重新创建)。

链表:查询慢(逐个查询),增删快(只修改节点)。

红黑树:趋近于平衡树,查询速度非常快,查询叶子节点最大次数和最小次数不能超过2倍。

Map接口

两个泛型<K, V>:K即key键,V即value值,映射关系,相当于数学函数中的自变量x、函数值y。存储重复key键的value值将覆盖原key键的value值。

Map接口的动态方法

  1. 创建对象:Map<类型实参1, 类型实参2> map = new HashMap<>(); //多态
  2. 引用对象的方法
  • map.put(key1, value1) == 替换映射元素key1=value1,返回key1的旧value值,若key1为新增,则旧value值为null。
  • map.remove(key1) == 移除映射元素key1=value1,返回value1,若key1不存在,则返回null。
  • map.get(key1) == 返回key1的映射value1,若key1不存在,则返回null。
  • map.containsKey(key1) == 判断map集合是否包含key1键,是则返回true, 否则返回false。
  • Set<类型实参1> set = map.keySet() == 返回map集合的key键Set集合,遍历方法1的前步奏

Map.Entry接口

Map接口的内部接口,存储Map的映射信息

Map.Entry接口的动态方法

  1. 创建Set型对象:Set<Map.Entry<类型实参1, 类型实参2>> set = map.entrySet(); //遍历方法2的前步奏,Set集合元素为Map.Entry集合,理解为二维集合。
  2. 创建Map.Entry型对象:遍历Set集合的元素,每个元素即为一个Map.Entry型对象
  3. 引用对象的方法

遍历元素名为entry

  • entry.getKey() == 返回entry集合的key键
  • entry.getValue() == 返回entry集合的value值

HashMap类

底层是哈希表结构

HashMap类的动态方法

  1. 创建对象:HashMap<类型实参1, 类型实参2> hm = new HashMap<>();
  2. 引用对象的方法:实现Map接口的方法。key键为自定义类型元素时,需重写hashCode方法和equals方法。

LinkedHashMap类

底层是哈希表结构,多一条记录储存顺序的链表,即集合元素按顺序存储。

LinkedHashMap类的动态方法

  1. 创建对象
  2. 引用对象的方法:继承HashMap类或实现Map接口的方法。

Hashtable类

key键和value值不能为null,否则报空指针异常,其功能基本被HashMap类取代。注意:table首字母小写。

Hashtable类的动态方法

  1. 创建对象:Hashtable<类型实参1, 类型实参2> ht = new Hashtable<>();
  2. 引用对象的方法:实现Map接口的方法。

JDK9的集合新特性

List接口、Set接口、Map接口的新增静态方法:List<类型实参1> list = List.of(元素列表) == 批量添加元素到集合。Set接口、Map接口(都用逗号分隔)同。//此方法添加元素后,集合不可再改变,否则报异常。Set接口、Map接口用此方法添加重复元素报异常。

举报

相关推荐

0 条评论