Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。 Lambda 表达式 @Test public void test1() { I1 i1 = new I
======================================================Collection排序工具类: import java.util.Collections; import java.util.Date; import java.util.List; import org.apache.commons.lang3.StringUtils; public class CollectionSortUtil { /** * 集合工
用少量气球射爆气球 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。 一支弓箭可以沿着 x 轴从不同点完全垂直地射出。
let a = { n: 1 } a.x = a = { n: 2 } console.log(a.x); /** 这道题打印undefined 第一行 开辟了堆内存o1, 存储{n:1} 第二行 a.x 指向后续的运算结果, 即此时o1.x = undefined a = {n:2}, 即开辟了堆内存o2, 存储{n:2}, a指向o2 a.x即o1.x = {n:1,x:{n:2}}
题目: 给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。 数据范围:1 \le n \le 10001≤n≤1000,树上每个节点的val满足 0<val \le 1000<val≤100 要求:时间复杂度 O(n)O(n) 注:本题保证二叉树中每个节点的val值
文章目录 数组列表List 数组 Arrays.sort(properties, (o1, o2) -> { return o1[0] == o2[0] ? (o2[1] - o1[1]) : (o1[0] - o2[0]); }); 按第0维升序排序,第0维相同时按第1维降序排序。 e.g. int[][] arr = {{1, 5}, {10, 4}, {4, 3}, {4, 4}}; System.out.println(Arr
目录 一、Java8新特性简介 特点 二、并行流与串行流 三、为社么要使用Lambda表达式 三、Lambda表达式使用举例 1.Runnable 2.Comprator (一) Lambda表达式的使用 1.格式 2.语法格式1:无参,无返回值 3.语法格式2:lambda需要一个参数,但是没有返回值 4.语法格式3:数据类型可以省略,因为可
Leetcode 1996. 游戏中若角色的数量 题目 https://leetcode-cn.com/problems/the-number-of-weak-characters-in-the-game/ 分析 题目要求将弱角色的数目统计出来,自己使用\(O(n^2)\)的办法做的,最后肯定超时了,看了一下题解才明白\(O(n)\)直接就能做出来,这里排除了排序,算上排序是\(O
1.死锁 1.1概述 /* 死锁:就是在执行过程中,都遇到了对方进入加锁的方法中,从而导致大家都访问不了的状态原理:1.某一线程 执行完成 需要 先后 嵌套 锁定 执行两个对象,并且在这个过程中,先锁定第一个对象2.另一个线程 执行完成 需要 先后 嵌套 锁定 执行两个对象,并且在这个过程中,先
什么是线程安全 《Java Concurrency In Practice》的作者 Brian Goetz 对线程安全是这样理解的,当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行问题,也不需要进行额外的同步,而调用这个对象的行为都可以获得正确的结果,那这个对象便是线程安全的。 通
1. 背景 JavaScript 中包含基础的值类型,引用类型及其他类型。 关于值类型和引用类型的区别,若有不理解的可以看这篇文章补课 【JavaScript】深拷贝与浅拷贝 ,这里就不再赘述。 当要判断 引用类型 时,以对象举例,则需要 遍历其所有的属性 来进行比较,只有属性对应的值
CF1599I Desert / 原题链接 题意 仙人掌是一张无向连通图,在一个仙人掌上,任意一条边至多只会出现在一个环上。 荒漠是一张无向图,一个荒漠的每个极大连通分量都是一个仙人掌。 给定一个 \(n\) 个点 \(m\) 条边的无向图,求有多少对 \(l,r\in [1,m]\),使得只保留编号在 \([l,r]\) 中的
面向对象 对象 key先数值,如果是字符串 按照谁先设置就先遍历谁 var arr = [1, 3, 5, 2, 3, 4, 5, 6, 3, 4]; arr = Object.values(arr.reduce((v, t) => { //加字符串a是为了不自动排序 v["a"+t] = t; return v }, {})) cons
线程安全(重点) 什么时候数据会存在线程安全问题? 条件1:多线程并发; 条件2:有共享数据; 条件3:有共享修改的行为; 如何解决线程安全问题? 线程同步机制:线程排队执行(不能并发),用排队机制解决线程安全难问题。 线程同步机制会牺牲一部分效率,数据安全第一位。 异
leetcode-56.合并区间 import java.util.Arrays; import java.util.Comparator; class Solution { public int[][] merge(int[][] intervals) { //sort Arrays.sort(intervals, new Comparator<int[]>() { @Override public
先来看以下代码 可以看到两个 short 型变量相加结果却为 int 型,这是为什么呢? 因为 Java 中精度小于 int 的数值运算的时候都回被自动转换为 int 后进行计算。 我们来看下以下几个例子: 例一 short o1 = 1; byte o2 = 2; short result = (short) (o1 + o2); 精度小于 int 的数值运
1、死锁是什么? 发生在并发中 互不相让:当两个(当两个(或更多)线程(或进程)相互持有对方所需的资源,又不主动释放,导致所有人都无法继续前进,导致程序陷入无尽的阻塞,这就是死锁) 2、多个线程造成死锁的情况 如果多个线程之间的依赖关系是环形,存在环路的锁的依赖关系,那么也就可以发
在二叉树中找到两个节点的最近公共祖先 1. 问题描述2. 样例说明3. 解法一:递归算法思想代码时间空间复杂度分析 4. 解法二:非递归算法思想代码时间空间复杂度分析 1. 问题描述 2. 样例说明 3. 解法一:递归 算法思想 分析可知,对于节点 o1, o2 的最近公共祖先,只存在三种情
Java死锁产生的四个必要条件: 1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用。 2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。 3、请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的占有。 4、循环等待,即
文章目录 前言一、返回数据展示?返回情况有两种,一种是data有数据,一种是没有数据 二、报错场景复现二.Optional 优雅解决1.java8提供 optional这个类来进行判断处理,以及判空后的业务逻辑处理2.optional类ofofNULLableisPresentgetifPresent orElseorElseGetorElseThrowmapf
java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下: public static <T> void sort(List<T> list):将集合中元素按照默认规则排序 public static <T> boolean addAll(Collection<T>c,T..elements):往集合中添加一些元素 public static void shuffle(List<?> list
redis 底层是hashtable,复杂度是o1; 扩容的时候是成倍扩容,渐进式的rehash;
要想实现线程死锁,首先要清楚线程死锁的四个条件 互斥条件:一个资源每次只能被一个进程使用,即在一段时间内某资源仅为一个进程所使用。此时如果有其它进程请求该资源,则请求进程只能等待。 请求和保持条件:进程中已经保持了至少一个资源,但又提出了新的资源请求,而该资源已经被其它进程
比较两个对象工具类 java public class CompareUtil { /** * 比较两个实体属性值,返回一个boolean,true则表时两个对象中的属性值无差异 * @param oldObject 进行属性比较的对象1 * @param newObject 进行属性比较的对象2 * @return 属性差异比较结果
今天做一个对象集合排序,看着代码没啥问题,可排序就是不起作用,代码如下。 public static void main(String[] args) { List<student> list=new ArrayList<>(); student o1=new student(); o1.setTotalNum(10); o1.setEndNum(2); student