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

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

 说明: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.lryc.cn/news/197104.html

相关文章:

  • Linux中的主要系统调用
  • 在vscode中配置git bash终端、git 源码管理
  • (三十四)大数据实战——scala运行环境安装配置及IDEA开发工具集成
  • Double 4 VR智能互动教学系统的教学应用
  • GPU 驱动下载记录
  • KILM: Knowledge Injection into Encoder-Decoder Language Models
  • 205、使用消息队列实现 RPC(远程过程调用)模型的 服务器端 和 客户端
  • C++中的函数
  • java操作时间的方式
  • 上网冲浪发现多处XSS
  • 机器学习的打分方程汇总
  • 一文了解数据管理框架以及数据战略制定方法
  • 智能管家“贾维斯”走进现实?AI Agent或成2023科技领域新风向标
  • 【广州华锐互动】VR高层小区安全疏散演练系统
  • 用Python做一个文件夹整理工具
  • Tortoise SVN 察看本地缓存密码
  • MSP430F5529晶振配置
  • [架构之路-237]:目标系统 - 纵向分层 - 网络通信 - DNS的递归查询和迭代查询
  • vue2 集成 Onlyoffice
  • 天锐绿盾透明加密、半透明加密、智能加密这三种不同加密模式的区别和适用场景——@德人合科技-公司内部核心文件数据、资料防止外泄系统
  • 六、DHCP实验
  • N沟道场效应管 FDA69N25深度图解 工作原理应用
  • Python爬虫入门教程
  • 使用正则前瞻检查密码强度
  • react+ts手写cron表达式转换组件
  • 民安智库(第三方市民健康素养调研)居民健康素养调查的重要性及实施步骤
  • Linux | vim的入门手册
  • B053 项目部署
  • 视觉Slam面试题(不定时更新)
  • 从入门到进阶 之 ElasticSearch 节点配置 集群篇