
Java集合类
Java集合类
小镇攻城狮
吃饭的家伙要拿稳咯
展开
-
【Java集合类】List中remove()方法需要注意的一个地方
话不多说,上代码 代码1:删除列表中的元素3 List<Integer> list1 = new ArrayList<>(); list1.add(1); list1.add(2); list1.add(3); System.out.println("list1: " + list1); list1.remove(3); System.out.println("list1: " + list1); 说明:直接这样写,在list1.remove(3);这一行会数组下标越界报错。 代原创 2021-10-28 23:11:29 · 594 阅读 · 0 评论 -
Java中res.add(list)和res.add(new ArrayList<Integer>(list))的区别
先说结论 res.add(list)为浅拷贝; res.add(new ArrayList(list))为深拷贝。 看代码 import java.util.ArrayList; public class Test { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.a原创 2020-12-02 09:56:19 · 2642 阅读 · 2 评论 -
【Java集合框架】Java中List<int[]>转二维数组
一般集合转数组通过调用toArray方法来实现,但是转换还是有很多限制的,这篇文章记录下List<int[]>转二维数组的操作。 public class Test { public static void main(String[] args) { List<int[]> list = new ArrayList<>(); int a1[] = new int[]{1, 2, 3}; int a2[] = new int[]{原创 2021-04-18 13:54:30 · 3825 阅读 · 0 评论 -
【Java集合】ConcurrentHashMap
1 ConcurrentHashMap线程安全的底层实现 JDK1.8以前 首先将数据分为一段一段地存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中的一个段的数据时,其他段的数据也能被其他线程访问。 ConcurrentHashMap由Segment和HashEntry组成。Segment实现了ReentrantLock,是一种可重入锁。HashEntry用于存储键值对数据。 一个 ConcurrentHashMap包含一个Segment数组。一个Segment包含一个HashEntry数组。当原创 2021-05-24 10:08:48 · 153 阅读 · 0 评论 -
【Java集合框架】两种常用的遍历Map的方式
Map是Java中常用到的集合类型,用来存储键值对形式的数据。今天来记录下两种常用到的遍历方式。 1 使用keySet遍历 说明:这种方式最简单,也最常用 public class Test { public static void main(String[] args) { Map<Integer, Integer> map = new HashMap<>(); map.put(1, 111); map.put(2, 222)原创 2021-04-16 21:20:03 · 1523 阅读 · 0 评论 -
【Java集合框架】通过Queue创建小根堆和大根堆
PriorityQueue是Java中内置的数据结构,表示堆。 PriorityQueue类继承于抽象类AbstractQueue,而AbstractQueue类实现了Queue接口。 创建小顶堆 public class Test { public static void main(String[] args) { // 默认为小根堆 Queue<Integer> a = new PriorityQueue<>(); System原创 2021-04-07 19:13:43 · 2267 阅读 · 0 评论 -
【Java集合框架】Queue、Deque和LinkedList的区别
Queue是一个接口,LinkedList是实现了Queue的一个类。 Deque也是一个接口,LinkedList也实现了Deque接口。 使用中的区别: 1 队列用Queue声明 public class Test { public static void main(String[] args) { Queue<Integer> queue = new LinkedList<>(); queue.add(1); queue原创 2021-04-03 16:11:25 · 4251 阅读 · 0 评论 -
【Java集合框架】Java中ArrayList<String>转String数组
集合转数组也是一个常用的操作。 看代码 import java.util.ArrayList; public class Test { public static void main(String[] args) { ArrayList<String> res = new ArrayList<>(); res.add("abc"); res.add("bcd"); res.add("cde"); // 要定义原创 2021-03-23 09:35:22 · 4358 阅读 · 0 评论 -
【Java集合】HashSet
1 HashMap与HashSet 底层:HashSet底层是基于HashMap实现的。 实现接口:HashMap实现了Map接口。HashSet实现了Set接口。 存储的值:HashMap存储键值对,HashSet仅存储对象。 添加元素:HashMap通过put()方法添加元素,HashSet通过add()方法添加元素。 计算hashcode:HashMap使用键计算hashcode,HashSet使用成员对象计算hashcode。 2 HashSet如何检查重复 当对象存入HashSet,HashS原创 2021-05-21 21:00:07 · 147 阅读 · 0 评论 -
Java中ArrayList的排序操作(二)--自定义排序规则
之前写的一篇博文直接使用Collections.sort()对一个ArrayList进行排序操作。这篇博文再加一点点进阶的操作,自定义排序规则。 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class T_00 { public static void main(String[] args) { ArrayList<Integer> a = ne原创 2020-11-17 14:58:12 · 2672 阅读 · 0 评论 -
Java中map按照值(value)排序
话不多说,上代码。有升序和降序排列。 package test; import java.util.ArrayList; import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class T_00 { public static void main(String[] args) { Map<String, Integer原创 2020-11-15 19:46:14 · 1686 阅读 · 0 评论 -
【Java集合】判断两个数组或集合中的元素是否相等
今天刷题的时候,遇到了一个操作,即判断两个数组或集合中的元素是否相等。一下子忘记了要用哪个方法,于是乎直接写了一个for循环。后来才想起要用equals()这个方法,特此写一篇博文,加强一下记忆。 public class LC_872 { public static void main(String[] args) { int[] nums1 = {1, 2, 3, 4, 5}; int[] nums2 = {1, 2, 3, 4, 5}; int[原创 2021-07-01 20:16:12 · 2807 阅读 · 2 评论 -
【Java集合】HashMap
文章目录1 HashMap的底层实现1.1 JDK1.8之前:`数组+链表`拉链法1.2 JDK1.8之后:`红黑树`红黑树为什么不直接使用红黑树?2 HashMap的长度为什么是2的幂次方3 HashMap于HashTable的区别 1 HashMap的底层实现 1.1 JDK1.8之前:数组+链表 HashMap通过key的hashcode值,经过扰动函数处理后,得到hash值。然后通过(n - 1) & hash判断当前元素存放的位置,这里的n指的是数组的长度。 如果当前位置存在元素,则判断原创 2021-05-21 16:56:20 · 114 阅读 · 3 评论 -
【Java集合】ArrayList和LinkedList
线程安全:两者都是线程不安全的 底层数据结构:ArrayList底层使用的是Object数组;LinkedList使用的是双向链表(JDK1.6,以及之前的版本使用的是双向循环链表)。 插入和删除元素是否受元素位置的影响:ArrayList插入和删除元素的时间复杂度受元素位置影响。LinkedList插入和删除元素的时间复杂度不受元素位置影响。 是否支持快速随机访问:ArrayList通过元素的序号快速获取元素对象(get(int index))。LinkedList不支持。 内存空间占用:ArrayLi.原创 2021-05-21 14:48:36 · 192 阅读 · 1 评论 -
【Java集合】HashMap和LinkedHashMap
HashMap是无序的,LinkedHashMap是有序的。 当key为基本类型时,HashMap和LinkedHashMap都会按照键值对存入的顺序取元素。 当key为引用类型时,HashMap取元素就会混乱,LinkedHashMap还是会按存入的顺序取出元素。 1 基本类型 public class Test_29 { public static void main(String[] args) { Map<Integer, Integer> map3 = ne原创 2021-06-22 16:24:03 · 3657 阅读 · 0 评论 -
【Java集合】LinkedList添加和删除元素的相关方法
相关文章: 【Java集合框架】Queue、Deque和LinkedList的区别 LinkedList常用来表示双端队列。它的添加和删除元素的相关方法比较多,容易混淆,这里简单总结下。 add,remove,addFirst,addLast,removeFirst,removeLast,pollFirst,pollLast,offerFirst,offerLast等方法看名字就知道添加和删除的顺序,就不举例了。 pop,poll,offer方法容易混淆,这里就举例说明下。 public class T原创 2021-05-31 20:44:13 · 3077 阅读 · 0 评论 -
Java中ArrayList的排序操作
排序是一种非常常用的操作,普通数组的排序可以通过Arrays.sort()来操作,但是ArrayList的操作略有不同,通过Collections.sort()来完成排序。 // 注意不要导错类 import java.util.Collections; public class test { public static void main(String[] args) { ArrayList<Integer> a = new ArrayList<Integer>(); f原创 2020-08-29 09:16:47 · 1317 阅读 · 0 评论