list.set交换数据需要(or不需要)添加其他中间变量,两个例子告诉你

news2024/11/26 5:23:03

 说明:set()方法是来修改指定位置的元素

两个参数,第一个参数是要修改的元素的索引,第二个参数是要设置的新值。

案例一:当链表中传入的是字符串时:

 public static void main(String[] args) {
        List list = new LinkedList();
        list.add("鱼香肉丝");
        list.add("粉蒸肉");
        list.add("梅干菜扣肉");

        System.out.println("=======迭代器遍历======");
        Iterator ito = list.iterator();
        while (ito.hasNext()) {
            Object o = ito.next();
            System.out.println(o);
        }

        //交换前两个元素,正确做法:
        String str1 = (String)list.get(0);
        String str2 = (String)list.get(1);
        list.set(0,str2);
        list.set(1,str1);
        
        //交换前两个元素,错误示例
        //list.set(0,list.get(1));
        //list.set(1,list.get(0));

        System.out.println("=======增强for遍历======");
        for (Object ob : list) {
            System.out.println(ob);
        }
    }

 错误示例:当调用list.get(1)时,便将list.get(0)覆盖了,此时的 list.get(0)="粉蒸肉"。

当然,面对元素较少的List ,你也可以选择重新赋初值,示例如下: 

        list.set(0,"粉蒸肉");
        list.set(1,"鱼香肉丝");

打印结果:

案例二:当list传入的不是字符串,而是一个对象时:

    public static void main(String[] args) {

        List list = new LinkedList();
//        List list = new Vector();
//        List list = new ArrayList();
        list.add(new Book("红楼小梦","曹雪芹",35.5));
        list.add(new Book("霸王别姬","张艺谋",98.5));
        list.add(new Book("一代妖姬","未知",30.5));
        list.add(new Book("前任三传","郑恺",32.5));

        System.out.println("=======迭代器遍历======");
        Iterator ito = list.iterator();
        while (ito.hasNext()) {
            Object o = ito.next();
            System.out.println(o);
        }

        Book book1 = (Book)list.get(0);
        Book book2 = (Book)list.get(1);
        //交换前两个元素
        list.set(0,book2);
        list.set(1,book1);

        System.out.println("=======增强for遍历======");
        for (Object ob : list) {
            System.out.println(ob);
        }
    }

此时,是创建的Book对象,而set()方法中并不会,覆盖赋值后的Book对象,只是对Book实例的引用而已。

打印结果:

小结:

  1. 当想要交换List的元素时,如果面对的对象较少,建议直接赋初值;
  2. 当面对元素较多时,可以将List向下转型,创建新的对象。此时,调用set()方法并不会覆盖对象的地址,只是对对象地址的引用而已。对象地址创建完在中,数据常量池中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1101190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库管理-第111期 Oracle Exadata 02-硬件构成(20231017)

数据库管理-第111期 Oracle Exadata 02-硬件构成(202301017) 新开的坑,感觉一般般,还是坚持写下去吧。 1 过去和Exadata相关的博文 这里集合汇总一下之前写过的和Exadata相关的文章: 数据库管理-第三十七期 我搞挂了…

【塔防】1,游戏架构

游戏架构 一,StoneDefence核心架构分析1,安装2,核心框架2.1创建核心核心环境2.1.1游戏中的核心元素(GameCore)ApawnGameInstanceGameStatePlayerStatePlayerControllerGameUserSettings 2.1.2大厅中的核心元素&#xf…

手撕Vue-数据驱动界面改变下

经过上一篇的介绍,已经实现了观察者模式的基本内容,接下来要完成的就是将上一篇的发布订阅模式运用到 Nue 中,实现数据驱动界面改变。 在监听数据变化的章节当中,根据指定的区域和数据去编译渲染界面 这个步骤处,我写了…

20.项目开发之量化交易QuantTrade(二)

项目开发之量化交易QuantTrade(二) 前后端业务:用户登录 业务实现 MemberController /** * 登录用户 * param member * return */ ApiOperation("登录接口") PostMapping("/login") public ResponseBody RestObject login(RequestBody Memb…

浅谈弧光保护在中低压电力系统中的重要性

【摘要】: 中低压电力系统由于无母线保护、出线多,操作频繁、三相导体线间距离和与大地的距离比较近、易受小动物危害、设备制造质量比高压设备差,使其弧光事故的易发性大大高于高压。基于此,本文首先阐述弧光产生的原因及危害&am…

yolov5 + openvino + c++测试

1.拉取最新yolov5代码,训练自己数据或者直接用官方pt模型来进行转为openvino的格式,当前已经支持直接把pt模型转为openvino。 我拉取的是:2023-10-03 21:46 dd9e3382c9af9697fb071d26f1fd1698e9be3e04 在export.py代码中把default中加…

MySQL高级-01.Linux系统下安装MySQL

1.环境配置 首先要准备好两台centos虚拟机,在高级篇部分可能有数据库主从复制,所以暂时先开两台虚拟机。 两台虚拟机需要更改: mac地址主机名ip地址UUID 1.更改主机名 更改虚拟机的主机名 vim /etc/hostname2.更改静态ip地址 /etc/sysc…

PyQt 问题记录

1.现成的组件不一定线程安全,(包括且不限于数据的修改竞争,和一些组件的崩溃 ) 对于PyQt 的线程使用,可能还需要更谨慎些 保存逻辑 QuestionBox("保存/Save")def Save(self):okFlagFalseerrFlagFalseWriteCmd{}for it in self.Mode…

RAII与智能指针

RAII与智能指针 1.RAII1.1RAII理解1.2RAII的原理1.2.1简单的例子说明局部对象的自动销毁的特性 1.2.2 RAII 过程 2.智能指针2.1 auto_ptr2.1.1auto_ptr的使用构造函数与析构函数拷贝构造函数与赋值提领操作auto ptr其它函数 2.1.2autoptr使用的注意事项 2.2 unique_ptr2.2.1uni…

一元函数极值问题

一元函数极值问题 0 引言 在高等数学课程中,我们应该都学习过一元函数的极值问题,这篇文章我们再来回顾一下相关知识点。为什么要对一元函数的极值问题进行回顾?因为后面我会出一篇非线性规划问题的极值问题,其中会涉及到多元函…

【视觉算法系列1】使用 KerasCV YOLOv8 进行红绿灯检测(下)

提示:免费获取本文涉及的完整代码与数据集,请联系助理老师peaeci122 使用最新“KerasCV YOLOv8”模型进行红绿灯检测的综合指南 YOLO目标检测模型已经进入了无数的应用领域,从监控系统到自动驾驶汽车。那么,如果在KerasCV框架下…

4.DApp-MetaMask怎么连接本地Ganache

题记 用metamask连接本地ganache,以下是全部操作流程 下载Ganache ganache是一个以太坊的个人开发环境,可以在上面部署合约、开发程序和进行测试。 ganache官网:Ganache - Truffle Suite 可以点击下面的按钮直接下载 ,下载速度…

怎样自动开始播放网页视频?

有些视频网站,网页打开后,并不会自动播放视频,需要人工点击视频或者播放器的播放按钮,才能进入视频播放状态。有没有办法一打开页面就自动播放视频呢?下面我们就来分析研究一下。 首先使用浏览器的开发者工具查看&am…

MybatisPlus多表关联分页返回结果异常

1. 按照该博客进行多表关联分页查询: https://blog.csdn.net/code_ang/article/details/116448694 2.在实际测试过程中,发现异常,分页返回的结果时而正确,时而错误。 count函数满足预期 count函数不满足预期 只是count了主表的…

pytorch 入门(二)

本文为🔗小白入门Pytorch内部限免文章 🍨 本文为🔗小白入门Pytorch中的学习记录博客🍦 参考文章:【小白入门Pytorch】教案二🍖 原作者:K同学啊 目录 一、神经网络的组成部分1. 神经元2. 神经网络…

热成像仪的工作原理及在工业设备状态监测中的应用

前面我们介绍过>>热分析技术在工业设备状态监测中的应用,下面我们将深入探讨热成像仪的工作原理及在工业设备状态监测中的应用。 近年来,热成像仪作为一种先进的检测工具,在工业设备状态监测领域得到了广泛的应用。热成像仪能够通过探测…

oauth2和knife4j结合

1.先说knife4j是个什么东西 他是swagger的升级版,在有swagger的调试功能以及接口描述的基础上,让人看着更加一目了然。 这次可能说的比较浅,主要是说怎么使用以及简单配置,还有我自己踩过的坑,因为这个东西我也第一次…

软件环境基础(ROS、CMake)

参考视频:【全】无人驾驶系列知识入门到提高 本文旨在对视频内容规划控制方面做一些学习记录,希望帮助有需要的人学习提高。不对处,望指正。 0 ROS介绍 ROS特点: 点对点设计(比如一个结点读取相机数据,传…

yolo配置(windows)

文章目录 一、下载Anaconda和pycharm1 、Anaconda官方下载地址:1.2 Anaconda 的安装 下载好之后双击打开可执行安装文件:1.3 进入到安装界面:1.4 这里建议两个都勾选(第一个选项是将 Anaconda 添加到环境变量中,不勾选…

火山引擎 ByteHouse:双十一即将到来,直播商家如何用数据“点播成金”?

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 “双十一”电商大促脚步渐近,各大平台的战火又将燃起。直播电商以低成本、高转化率等优势备受商家青睐。据智研咨询数据显示,2022 年我国直播…