当前位置: 首页 > news >正文

二维数组多次排序 或 嵌套list多次排序

可以排序int[ ][ ]的顺序,也可以排序List<List<Integer>> 顺序

为便于理解,以力扣原题为例:1333.餐厅过滤器

原题中给了一个双重数组,并要求返回一个List<Integer>。

方法1
会用流的,通常用于会反应把双重数组转成List<List<Integer>>去处理这个双重数组,于是解题思路如下:

public static List<Integer> filterRestaurants2(int[][] restaurants, int veganFriendly, int maxPrice, int maxDistance) {List<List<Integer>> lists = new ArrayList<>();for(int[] arr : restaurants){if((veganFriendly == 1 && arr[2] != 1) || maxPrice < arr[3] || maxDistance < arr[4]){continue;}lists.add(Arrays.stream(arr).boxed().collect(Collectors.toList()));}if (lists.size() == 0) {return new ArrayList<>();}lists.sort((a,b) ->{int rating = b.get(1).compareTo(a.get(1));if (rating != 0) {return rating;}return b.get(0).compareTo(a.get(0));});return lists.stream().map(o->o.get(0)).collect(Collectors.toList());
}

可是该方式耗空间较大,于是又会想,能不能从直接用数组的方式,不另外构造新对象。

方法2:

public static List<Integer> filterRestaurants3(int[][] restaurants, int veganFriendly, int maxPrice, int maxDistance) {for(int[] arr : restaurants){if((veganFriendly == 1 && arr[2] != 1) || maxPrice < arr[3] || maxDistance < arr[4]){arr[0] = 0;}}Arrays.sort(restaurants, (o1, o2) -> {int compare = Integer.compare(o2[1], o1[1]);if (compare != 0){return compare;}return Integer.compare(o2[0], o1[0]);});return Arrays.stream(restaurants).map((int[] o)->o[0]).filter(o->o!=0).collect(Collectors.toList());
}

但是提交的结果然后是耗时耗空间。
既然数组能用流处理,那是不是可以全部用流的形式过滤和排序呢
方法3:

public static List<Integer> filterRestaurants(int[][] restaurants, int veganFriendly, int maxPrice, int maxDistance) {return Arrays.stream(restaurants).filter(r -> (veganFriendly != 1 || r[2] == 1) && r[3] <= maxPrice && r[4] <= maxDistance).sorted((a1, a2) -> a1[1] == a2[1] ? a2[0] - a1[0] : a2[1] - a1[1]).map(a -> a[0]).collect(Collectors.toList());
}

相关文章:

二维数组多次排序 或 嵌套list多次排序

可以排序int[ ][ ]的顺序&#xff0c;也可以排序List<List<Integer>> 顺序 为便于理解&#xff0c;以力扣原题为例&#xff1a;1333.餐厅过滤器 原题中给了一个双重数组&#xff0c;并要求返回一个List<Integer>。 方法1&#xff1a; 会用流的&#xff0c…...

Flutter - 波浪动画和lottie动画的使用

demo 地址: https://github.com/iotjin/jh_flutter_demo 代码不定时更新&#xff0c;请前往github查看最新代码 波浪动画三方库wave lottie动画 Lottie 是 Airbnb 开发的一款能够为原生应用添加动画效果的开源工具。具有丰富的动画效果和交互功能。 # 波浪动画 https://pub-web…...

忘记压缩包密码?解决方法一键找回,省时又便捷!

使用在线rar/zip解密工具&#xff0c;找回rar/zip密码并解密压缩包的方法非常简单。具体步骤如下&#xff1a;首先&#xff0c;在百度上搜索“密码帝官网”&#xff0c;这是一个专业的解密服务网站。然后&#xff0c;点击搜索结果中的链接&#xff0c;进入官网首页。在页面上方…...

“UTONMOS”掀起元宇宙游戏热潮,全球发展前景广阔

我们都知道&#xff0c;市面上无论是PC端的网游还是移动端手游&#xff0c;它如果要做到源源不断的内容输出&#xff0c;不仅取决于游戏公司产品质量和业绩&#xff0c;也与公司的决策和市场沟通密不可分。 元宇宙游戏市场受到关注 近年来&#xff0c;元宇宙游戏市场逐渐升温…...

用idea工具scala 和 Java开发 spark案例:WordCount

目录 一 环境准备 二 scala代码编写 三 java 代码编写 一 环境准备 创建一个 maven 工程 添加下列依赖 <dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>${spark.version}</vers…...

【git merge/rebase】详解合并代码、解决冲突

目录 1.概述 2.merge 3.rebase 4.merge和rabase的区别 5.解决冲突 1.概述 在实际开发中&#xff0c;一个项目往往是多个人一起协作的&#xff0c;头天下班前大家把代码交到远端仓库&#xff0c;第二天工作的第一件事情都是从服务器上拉最新的代码&#xff0c;保证代码版本…...

nrm,npm源的管理工具

npm手动切换淘宝源 查看当前的仓库 npm config get registry设置成淘宝源 npm config set registry https://registry.npmmirror.com/设置回官方源 npm config set registry https://registry.npmjs.org/手动切换不免不太方便&#xff0c;而且网上很多资料淘宝源还是过期的链接…...

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Stack

堆叠容器&#xff0c;子组件按照顺序依次入栈&#xff0c;后一个子组件覆盖前一个子组件。该组件从API Version 7开始支持。可以包含子组件。 一、接口 Stack(value?: { alignContent?: Alignment }) 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 二、…...

腾讯云2核4G服务器一年和三年价格性能测评

腾讯云轻量2核4G5M服务器&#xff1a;CPU内存流量带宽系统盘性能测评&#xff1a;轻量应用服务器2核4G5M带宽&#xff0c;免费500GB月流量&#xff0c;60GB系统盘SSD盘&#xff0c;5M带宽下载速度可达640KB/秒&#xff0c;流量超额按照0.8元每GB的价格支付流量费&#xff0c;轻…...

集线器、交换机、路由器是如何转发包的

集线器、交换机、路由器是如何转发包的 集线器交换机MAC地址表的维护 路由器路由表中的信息路由器的包接收操作查询路由表确定输出端口找不到匹配路由时选择默认路由包的有效期通过分片功能拆分大网络包路由器发送操作中的一些特点 参考文档 集线器 集线器是一层&#xff08;物…...

交通物流模型 | MDRGCN:用于多模式交通客流预测的深度学习模型

城市交通拥堵是造成交通事故的重要原因,也是城市发展的主要障碍。通过学习历史交通流数据,我们可以预测未来一些区域的交通流,这对城市道路规划、交通管理、交通控制等都有重要意义。然而,由于交通网络拓扑结构的复杂性和影响交通流的因素的多样性,交通模式往往是复杂多变…...

保研经历分享(一)

这个系列的文章主要是想记录一下自己大学期间最重要的一件事&#xff08;保研!!&#xff09;的经历、过程&#xff0c;外加一些保研流程介绍、面试经验、院校投递、踩坑经历&#xff0c;主要给学弟学妹们避雷&#xff0c;也做一些借鉴吧~ 这一篇主要是对保研过程的一些介绍&…...

【手写数字识别】数据挖掘实验二

文章目录 Ⅰ、项目任务要求任务描述&#xff1a;主要任务要求(必须完成以下内容但不限于这些内容)&#xff1a; II、实现过程数据集描述实验运行环境描述KNN模型决策树模型朴素贝叶斯模型SVM模型不同方法对MNIST数据集分类识别结果分析(不同方法识别对比率表及结果分析) 完整代…...

什么是云计算?云计算简介

其实“云计算”作为一个名词而言&#xff0c;那是相当成功滴。很多人都有听过。但提及云计算”具体是什么?很多人&#xff0c;知其然&#xff0c;却不知其所以然! 利用软件将这些成千上万不可靠的硬件组织成一个稳定可靠的IT系统&#xff0c;以此支撑其公司的IT基础服务。这家…...

Vue路由进阶--VueRouter声明式导航

Vue路由进阶–VueRouter声明式导航 文章目录 Vue路由进阶--VueRouter声明式导航1、声明式导航1.1、导航链接1.2、高亮类名1.3、跳转传参1.4、动态路由参数可选符 1、声明式导航 1.1、导航链接 需求&#xff1a;实现导航高亮效果 vue-router提供了一个全局组件router-link(取…...

Oracle 云服务即将支持 PostgreSQL!

2023 年 9 月 19 日&#xff0c;Oracle 产品团队发布了一篇文章&#xff0c;宣布 Oracle 云基础架构&#xff08;OCI&#xff09;开始提供 PostgreSQL 服务。目前支持的版本为 PostgreSQL 14.9&#xff0c;提供有限支持&#xff0c;12 月份将会提供正式版本。 众所周知&#x…...

数字孪生项目:突破技术难关,引领未来发展

项目背景 数字孪生技术一直在不断发展&#xff0c;为企业提供了无限的潜力和机会。在这个数字时代&#xff0c;公司需要不断进化&#xff0c;以适应市场的需求和客户的期望。北京智汇云舟一直以“视频孪生”为标签&#xff0c;是数字孪生领域的头部企业&#xff0c;拥有强大的…...

MySQL 如何使用离线模式维护服务器

离线模式 作为 DBA&#xff0c;最常见的任务之一就是批量处理 MySQL 服务的启停或其他一些活动。在停止 MySQL 服务前&#xff0c;我们可能需要检查是否有活动连接&#xff1b;如果有&#xff0c;我们可能需要把它们全部杀死。通常&#xff0c;我们使用 pt-kill 杀死应用连接或…...

期权开户流程合集——期权开户的操作步骤

最详细的期权开户流程介绍是怎样的&#xff0c;下文为大家介绍期权开户流程合集——期权开户的操作步骤的知识点&#xff0c;希望对读者有所帮助&#xff0c;期权开户流程和方式分两种&#xff0c;一种券商&#xff0c;一种期权分仓平台&#xff0c;有啥区别下文揭秘。本文来自…...

mysql改造oracle,以及项目改造

mysql改造oracle&#xff0c;以及springboot项目改造 oracle改造说明 这次的任务是springboot mysql版本改造为oracle版本&#xff0c;mysql5.7&#xff0c;oracle11.2&#xff0c;springboot2.0.2&#xff08;springboot版本无所谓&#xff0c;都差不多&#xff0c;自己记录…...

红外对射传感器实战指南:从原理到Arduino/CircuitPython应用

1. 项目概述红外对射传感器&#xff0c;也叫红外遮断传感器&#xff0c;是我在自动化项目和互动装置里用得最多的基础传感器之一。它原理简单直接&#xff0c;但用好了能解决很多实际问题&#xff0c;比如统计人流、检测传送带上的物品、制作一个简单的防盗报警器&#xff0c;或…...

避坑指南:在Python 3.7环境用ModelScope部署speech_campplus_sv_zh-cn_16k-common语音识别模型的完整流程

避坑指南&#xff1a;Python 3.7环境部署ModelScope语音识别模型的完整实践 在人工智能语音处理领域&#xff0c;说话人验证技术正逐渐成为身份认证和语音交互系统的核心组件。阿里云达摩院开源的speech_campplus_sv_zh-cn_16k-common模型作为轻量级解决方案&#xff0c;特别适…...

Visual Paradigm 17.0 新特性解析:团队协作与项目管理效率跃升

1. Visual Paradigm 17.0 团队协作功能全面升级 Visual Paradigm 17.0 版本带来了多项针对团队协作的实用改进&#xff0c;让分布式团队的建模工作变得更加高效。作为一个长期使用该工具的老用户&#xff0c;我发现这次更新特别注重解决实际协作中的痛点问题。 首先说说模型搜索…...

开源中国双核战略:AI普惠生态的破局之道

当全球AI产业进入深水区&#xff0c;技术突破与商业落地之间的鸿沟日益凸显。开源中国以"模力方舟"和"口袋龙虾"双核驱动战略&#xff0c;正在构建一个从云端到终端的完整AI应用生态&#xff0c;为中国AI产业提供了一条独特的普惠化路径。这一战略不仅解决…...

MOXA NPort 5110串口服务器避坑指南:网线直连、波特率设置与Web管理那些事儿

MOXA NPort 5110串口服务器实战避坑手册&#xff1a;从硬件部署到批量管理的深度解析 第一次接触工业级串口服务器时&#xff0c;我对着那个巴掌大的金属盒子发呆了十分钟——RJ45、DB9、电源接口密密麻麻挤在一起&#xff0c;配套光盘里还有三个不同功能的配置工具。直到现场调…...

Untrunc代码架构深度剖析:理解C++实现的视频修复引擎

Untrunc代码架构深度剖析&#xff1a;理解C实现的视频修复引擎 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc Untrunc是一…...

为什么FlicFlac是Windows用户必备的音频格式转换神器?

为什么FlicFlac是Windows用户必备的音频格式转换神器&#xff1f; 【免费下载链接】FlicFlac Tiny portable audio converter for Windows (WAV FLAC MP3 OGG APE M4A AAC) 项目地址: https://gitcode.com/gh_mirrors/fl/FlicFlac 还在为不同设备间的音频格式不兼容而烦…...

AD21原理图设计避坑指南:搞定多通道编译时的‘多个网络名称’报错

AD21多通道设计实战&#xff1a;彻底解决"Multiple Net Names"报错难题 当你在AD21中精心设计了一个多通道电路&#xff0c;满心期待点击"编译"按钮时&#xff0c;Messages面板突然弹出的红色"Multiple Net Names"错误提示&#xff0c;就像交响乐…...

FOWFP封装技术:移动设备半导体的尺寸与性能突破

1. 移动设备半导体封装的演进与挑战在智能手机和平板电脑的电路板上&#xff0c;PMIC电源管理芯片的封装尺寸往往决定了主板布局的极限。2016年我在参与某旗舰手机项目时&#xff0c;主板工程师指着BOM表上那个44mm的QFN封装芯片说&#xff1a;"如果能再缩小1mm&#xff0…...

基于Python与OpenCV的屏幕视觉自动化工具开发实战

1. 项目概述与核心价值 最近在折腾一个挺有意思的玩意儿&#xff0c;叫 screen-vision 。这名字听起来有点玄乎&#xff0c;但说白了&#xff0c;它就是一个 基于计算机视觉的屏幕内容实时分析与自动化工具 。你可以把它理解为一个“数字眼睛”&#xff0c;它能持续盯着你…...