关于Set和List做remove的小测试

List与Set for each循环remove比较 写这篇文章的原因还是老生常谈的Iterator中调用Collection的remove会出现各种各样的bug的问题。但是List和Set中出现的情形不一样,因此深挖一下并进行比较。 首先我们来看现象,此处用最常用的ArrayList和HashSet举例: List 1. public static void main(String[] args) { List<Integer... 阅读详情
转载我的一个好友 XT Zang的文章,这家伙是个老师,JAVA的功底还是不错的。

http://blog.youkuaiyun.com/ZangXT/archive/2008/10/22/3127079.aspx


郁闷,一个很简单的问题却没有正确的看出答案。

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Set;
  4. import java.util.TreeSet;

  5. public class Main {

  6.     public static void main(String[] aa) {
  7.         Set<Integer> set = new TreeSet<Integer>();
  8.         List<Integer> list = new ArrayList<Integer>();
  9.         for (int i = -3; i < 3; i++) {
  10.             set.add(i);
  11.             list.add(i);
  12.         }
  13.         for (int i = 0; i < 3; i++) {
  14.             set.remove(i);
  15.             list.remove(i);
  16.         }
  17.         System.out.println(set + " " + list);
  18.     }
  19. }
答案是:
[-3, -2, -1] [-2, 0, 2]

Set倒是容易理解,List却忘记了移出之后右边的数据会往左移动。

这是个很好的题目,一个是要明白不同的数据结构对数据的存储方式,一个是理解java的自动装箱机制,再一个就是知道两个数据结构的remove方法参数是不同的,set的remove移出的自动装箱之后的对象,而list的remove方法参数是int类型。
教训,一定要仔细。



【例1857】remove from selection list 从选择列表中移除 remove from selection list 从选择列表中移除》这是一个NX二次开发官方小例子,下面是代码和解析。相较于混乱、未经验证的代码,官方案例能够确保开发者获得准确的开发方法,这些官方示例代码经过严格测试,能够正确地反映出NX软件的功能和API使用方式,有助于开发者系统地掌握NX二次开发技能,提高开发质量和效率。本专栏订阅后是永久阅读的。欢迎一起学习NX二次开发案例,逐步积累宝贵的经验,早日成为行业专家。 阅读详情

相关推荐

dify智能体:日志管理与标注功能详解

日志管理与标注功能是优化聊天助手、Agent、文本生成应用、Chatflow 和工作流等工具交互体验的关键。日志管理允许用户查看、修改和标注日志,帮助回顾和优化交互内容。用户可以通过点击👍或👎按钮快速标注满意度,标注后的日志可用于后续优化和分析。标注功能则支持用户对交互内容进行标记和调整,以提升模型输出质量。此外,用户还可以调整界面语言和时区设置,确保在熟悉的环境中操作。这些功能共同作用,显著提升了交互体验和模型性能。

zyx_bx的博客 2712

一个关于Set 和List的小测试

郁闷,一个很简单的问题却没有正确的看出答案。import java.util.ArrayList;import java.util.List;import java.util.Set;import java.util.TreeSet;public class Main {    public static void main(String[] aa) {        Set&lt;Integer...

mybygao 165

新一代XMOS会议四麦方案主控芯片 XVF3800

2023年,知名的音频芯片制造厂商 XMOS 正式发布了新一代会议麦阵芯片片 XVF3800 ,这款芯片采用最先进的四麦音频算法,可在嘈杂的环境中提供高质量语音,算法支持圆形、条形阵列,可根据应用场景组成不同的产品形态。传统的麦阵解决方案,不仅需要捕捉会议中的人声,也会同时捕捉环境中的其他噪声,而 XMOS 先进的语音算法解决了这一问题。声学回声消除功能可消除麦克风音频输入的回声,同时减少远端回声,使 XVF3800 能提取清晰的语音信号。• 180度拾音条形麦克风阵列。• 360度拾音环形麦克风阵列。

PawPaw_electron的博客 785

Java中对Map,HashMap,Set,List的remove、removeAll方法理解

一些基本的用法大家都知道,这里就不提了,这里记录的remove相关方法的返回值的问题1 Map    Map的remove方法源码: public V remove(Object key) 由此可以看出remove方法是有返回值的,可以用一个类型去接收的 HashMap也是一样的 2 Set Set的remove方法源码: boolean remove(Object o); Set是返回的remo...

qq_31766013的博客 5705

IGBT模块封装中的银烧结技术:为什么特斯拉和比亚迪都在用这种黑科技?

本文深入解析了IGBT模块封装中的银烧结技术,揭示了其作为功率半导体封装工艺关键升级的原因。该技术通过低温烧结形成高熔点、高导热导电的银连接层,显著提升了模块的功率循环寿命、散热能力和高温工作稳定性,这正是特斯拉、比亚迪等行业巨头采用此项黑科技以释放电动汽车电驱系统极致性能的核心所在。

yhn4567890的博客 834

Multisim的探针(Probe)及数字电路的一些调试技巧的应用

Multisim的探针(Probe)及数字电路的一些调试技巧的应用 --EE Bang   By  WRS 上图为555方波发生器,根据R1,R2,C2参数的配置可产生频率为46.3KHZ,占空比50%的方波信号,如果用示波器查看波形参数的话需要用两个坐标轴做差,操作不便,另外如果要修改电路将上述电阻换成滑动变阻器的话,使其产生可变频率

Agent Christmas的博客 3万+

JAVA基础:contains和remove执行原理、List、Set的区别及应用

contains和remove contians和remove操作自定义对象时候,其实底层是用equals去比较对象,需要重写equals 方法,然后当传入同一个对象时候,才会返回true,否则就是false 对象数组(引用数组):对象数组指的就是存储引用数据类型的数组 /* 对象数组 引用数组 / public class ObjArray { public static void main(...

T_Tonz的博客 873

python123题目——判断火车票座位B(异常)

类型:流程控制。

m0_62488776的博客 3569

JavaSE_014集合类库(上)   

目录 14.1 集合的概述(重点) 14.1.1 集合的由来 14.1.2 集合的框架结构 14.2 Collection集合(重点)...

vina的博客 360

scratch lenet(4): 开根号的C语言实现

使用C语言,分别使用二分法、牛顿法、卡马克快速法,求解正实数的开根号。包括公式推导、代码实现、运行结果,不使用任何第三方库和C标准库的数学库。

baiyu33的博客 4970

MATLAB极坐标伪彩色圆图绘制之polarPcolor函数

polarPcolor函数介绍 我们经常在论文或期刊上看到如下图这种以色调冷暖代表数值大小的极坐标圆图, 而function [varargout] = polarPcolor(R,theta,Z,varargin)可以很好的帮助我们快速绘制这类极坐标圆图。它非常适合雷达或激光雷达的平面位置指示器。使用polarPcolor函数时,我们只需根据手中数据构造相应的二维矩阵Z即可,十分便捷。varargin值为绘制模式选择。R值为半径坐标一维矩阵,theta值为角坐标一维矩阵。 代码示例 这里使用了海洋表面耀光

qq_19512613的博客 1万+

【实测好用】抖音私信卡片怎么引流到微信?开源链接跳转方案完全指南

想搞清楚抖音私信卡片引流到微信怎么落地,可以先看这个开源项目。项目名就叫「链接跳转引流技术源码 - 抖音私信卡片引流到微信」,核心功能一句话:在抖音私信里发一张卡片,用户点击后通过链接跳转,最终到达微信。 ## 痛点:私信里直接留微信,为什么越来越难走通 做账号的人都踩过这个坑:私信直接回微信号,轻则消息被限制,重则账号被限流。 发普通链接也好不到哪去。用户在抖音站内点开,要么跳不出去,要么

gitblog_00605的博客 440

NLTK中WordNet与同义词处理

通过本教程,学习了如何使用NLTK中的WordNet进行自然语言处理任务。首先介绍了WordNet的基本概念及其在NLTK中的集成使用,接着讲解了如何查找同义词、反义词等词汇关系,并结合实际应用演示了语义相似性计算。这些技能在文本分析、情感分析、信息检索等场景中有广泛应用,可以帮助开发者构建更智能的自然语言处理系统。掌握这些基本操作后,可以进一步探索WordNet的其他高级功能,结合其他NLTK工具进行更复杂的语言分析。

Mr数据杨 477

ListIterator中set(),add(),remove(),操作同步问题及源码分析

最近在学习迭代器,其中Iterator在进行迭代时,不允许对生成迭代器的Collection进行并发增加删除操作,否则会抛出线程同步异常。所以我们使用ListIterator,因为ListIterator是带有索引的迭代器,而Collection是不带索引的迭代器。所以ListIterator中有对迭代器的操作方法,修改:set(),增加:add(),删除:remove()。迭代器迭代完毕后,会将...

zhangrenfeng6的博客 1358

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

List、Set、数据结构、Collections

先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。例如,子弹压进弹夹,先压进去的子弹在下面,后压进去的子弹在上面,当开枪时,先弹出上面的子弹,然后才能弹出下面的子弹。,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。也就意味着,树的键值仍然是有序的。它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致)。

m0_69307756的博客 1110

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

List集合的特有功能概述和测试

List集合的特有功能概述和测试A:List集合的特有功能概述void add(int index,E element)E remove(int index)E get(int index)E set(int index,E element)package com.heima.list; import java.util.ArrayList;import java.util.List; pub...

weixin_30588907的博客 72

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java集合基础:2. List接口和Set接口

文章目录一、List接口1. List接口概述2. List接口的主要实现类3. List接口的常用方法二、Set接口1. Set接口概述2. Set接口的实现类三、 一、List接口 1. List接口概述 List接口是Collection的子接口,List接口中除了Collection中的方法外,还添加了一些额外的方法 List存放元素的特点:可重复,有序性 2. List接口的主要实现类 List接口的实现类为:ArrayList,LinkedList,Vector 三者的相同点:三个类都是

Jrthur_A的博客 671

集合框架List,Set ,Map的总结

下面我先用一张思维导图带大家捋一捋集合之间的关系吧! 我们很清晰的可以看到connection的父亲是iterable,然后list、set、queque都是他的儿子 首先我们可以看到iterable的remove()方法与connection的emove(obeject)方法,它们都是remove方法,但是一个有参一个没参,所以第一个面试题就是: 1、Conllection接口的remove(...

weixin_45174624的博客 258

python中list,tuple,dict,set特点对比总结

python中list,tuple,dict,set特点对比总结 1 .list 1),list是一个使用方括号括起来的有序元素集合; 2),List 可以作为以 0 下标开始的数组,任何一个非空 list 的第一个元素总是 L[0],负数索引从 list 的尾部开始向前计数来存取元素。任何一个非空的 list 最后一个元素总是 L[-1]; 3),有分片功能,两个list可以相加; 4),app...

weixin_33725722的博客 642

CMake入门:3、变量操作 set 和 list

在 CMake 中,set 和 list 是两个核心命令,用于变量管理和列表操作。理解它们的用法对于编写高效的 CMakeLists.txt 文件至关重要。

m0_75107602的博客 1052

Java集合框架:List与Set的核心区别与应用场景

Java集合框架是数据处理的基础组件,其核心在于数据结构的选择与实现原理。List接口基于动态数组或链表实现,维护元素插入顺序,适合需要索引访问和允许重复的场景;Set接口则通过哈希表或树结构确保元素唯一性,提供O(1)级别的查找性能。理解这两种集合的底层实现差异对性能优化至关重要,例如ArrayList的随机访问优势与HashSet的快速去重特性。在实际工程中,集合选择直接影响系统效率,如使用HashSet优化百万级数据查询,或通过ArrayList维护操作日志顺序。掌握集合框架的线程安全方案(如Copy

weixin_30568591的博客 400

迭代器遍历List Set Map

迭代器遍历List Set Map - - package cn.sxt.collection; - - import java.util.ArrayList; - import java.util.HashMap; - import java.util.HashSet; - import java.util.Iterator; - import java.util.List; - impor...

weixin_44019182的博客 941

栈、队列、set、map、list的常用方法

常用方法

weixin_44750790的博客 1723
上一篇: 编程之美,JAVA控制CPU的使用率(2),完美曲线
下一篇: 字符串相等(==)的全测试
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值