java修改list中对象的值_Java中List集合的一点总结

ac9e0ef6c897d6454668e495ab1b9496.png

为什么要用接口引用指向实现类的对象?

这种写法其实java多态的表现形式

多态的定义:

指允许不同类的对象对同一消息做出响应。

即同一消息可以根据发送对象的不同而采用多种不同的行为方式。

(发送消息就是函数调用

List list;是在栈区开辟一个空间放list引用,并没有创建对象所以不知道ArrayList还是LinkedList

当你list= new ArrayList(); 就创建了ArrayList对象。

并且把开始创建的list引用指向这个对象ArrayList和LinkedList都是List的实现类。

为什么一般都使用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢?

?

问题就在于List有多个实现类,如 LinkedList或者Vector等等,现在你用的是ArrayList,

也许哪一天你需要换成其它的实现类呢?,这时你只要改变这一行就行了:

List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。

假设你开始用 ArrayList alist = new ArrayList(),

这下你有的改了,特别是如果你使用了 ArrayList特有的方法和属性。

,如果没有特别需求的话,最好使用List list = new LinkedList(); ,便于程序代码的重构.

这就是面向接口编程的好处

注意事项

list只能使ArrayList中已经实现了的List接口中的方法

,ArrayList中那些自己的、没有在List接口定义的方法是不可以被访问到的

list.add()

其实是List接口的方法

但是调用ArrayList的方法如 clone()方法是调用不到的

ArrayList源码分析:

1.add(int index ,Object obj):首先判断是否越界?数组拷贝的原理;把index 拷贝到index+1,size-1

是拷贝长度,将元素添加到索引为index的位置上,元素的个数+1

2.get(int index):根据索引获取元素对象,调用elementDate(index)方法:在Object类型的数组中

根据索引取出元素对象

3.size():每次添加size+1

4.isEmpty():判断元素是否一个没有返回布尔类型的值

5.set(int index):在指定索引位置修改我们对象:调用elementDate(index)方法:根据索引把元素调出

再设置新的元素到index位置,返回一个old元素后 设置成功

6.remove(int index):调用elementDate(index)方法:获取元素,size-index-1?

7.clear():循环设置元素位置为null然后长度size设为0

8.iterator!!!

LinkedList:链表

Vector:创建的时候初始化容量就是10 和ArrayList的底层结构相同都是Object类型的数组,ArrayList

在add元素的时候才会初始化容量 扩容方式 Arrays扩容每次0.5倍 Vector每次扩容1倍

ArraysList线程非同步(jdk1.2)是Vector(jdk1.0安全性高线程同步的优化

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

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

相关文章

Science公布年度十大科学突破!新冠疫苗居首位

来源 : 新华社编辑:宗华排版:郭刚美国《科学》杂志17日公布其评选的2020年十大科学突破,“以创纪录的速度开发和测试急需的新冠疫苗”当选头号突破。中国、美国、欧洲等地科研人员在2020年年初获得新冠病毒基因组序列后&#xff0…

openlayers实例_介绍OpenLayers

简介Web开发有一个专门的方向就是Web GIS,而Openlayers库就是Web GIS里的一个翘楚,想要开源的Web GIS的JavaScript库几乎就没有别的选择。OpenLayers的官网是OpenLayers - Welcome​openlayers.org目前最新的版本是5.3.x。它的github地址是openlayers/op…

macos Jetbrains IDEA用户自定义vm配置信息存储路径, IDEA点击无反应 无法打开问题解决

Jetbrains Clion, IDEA 用户在应用里面修改了自定义的VM配置后的存储路径为 ~/Library/Application Support/JetBrains/xxx2023.3/xxx.vmoptions xxx为你安装的APP名称, 如 Clion .IntelliJIdea 这里的自定义配置如果配置有误就会直接导致JetBrains软件无法打开, 即 点击打开…

Leetcode--322. 零钱兑换

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 示例 1: 输入: coins [1, 2, 5], amount 11 输出: 3 解释: 11 5 5 1 示例 2: 输入: coins [2],…

【sping揭秘】19、关于spring中jdbctemplate中的DataSource怎么来呢

我们这是可以正好借助之前学的factorybean类&#xff0c;自己吧jdbctemplate加载到spring容器中&#xff0c;我们可以封装多个这种对象&#xff0c;那么可以实现针对不同的数据库的jdbctemplate 首先我们肯定要引入对应的jar&#xff0c;来构建数据源对象 <dependency>&l…

2020年度“中国神经科学重大进展”获奖名单【附成果介绍】

来源&#xff1a;brainnews编辑&#xff1a;Simon为了推动神经科学领域的创新发展&#xff0c;充分展示和宣传神经科学领域的重大科研成果&#xff0c;经中国神经科学学会七届二次常务理事会一致通过&#xff0c;开展2020年度“中国神经科学重大进展”推荐工作。按照相关程序&a…

python选择某一行_Python常用语法有哪些 如何快速入门Python开发

Python常用语法有哪些&#xff1f;如何快速入门Python开发&#xff1f;Python编程语言是最容易学习、并且功能强大的语言&#xff0c;吸引了很多人学习入行。很多人想知道如何快速入门Python开发&#xff0c;接下来就给大家分享Python学习入门中常用的语法知识。1、变量。常量&…

Java--线程同步

在单线程程序中&#xff0c;每次只做一件事情&#xff0c;后面的事情需要等待前面这件事情完成才可以进行 如果是多线程程序&#xff0c;这件事情还没做完就又做另外一件事情&#xff0c;这就可能发生两个线程抢占资源的问题 例如&#xff1a;a与b两个人都要去洗手间&#xf…

人类使用AI征服太空技术盘点,《星球大战》中的机器人会成为现实吗?

来源&#xff1a;学术头条作者&#xff1a;Thomas Lawrence一说起太空 AI&#xff0c;你脑海中浮现的是这样的角色吗&#xff1f;图 | 电影《星球大战》的AI机器人&#xff1a;C-3PO和R2-D2&#xff08;来源&#xff1a;starwars.fandom.com)实际上&#xff0c;早在现代计算机问…

springboot jar中没有主清单属性_Spring Boot 常见错误及解决方法

导读Spring Boot 作为 Java 生态中最流行的开发框架&#xff0c;意味着被数以万计的开发者所使用。下面根据我们自身遇到的问题&#xff0c;加上用户提供的一些反馈&#xff0c;来大致梳理下 Spring Boot 的常见错误及解决方法。找不到配置&#xff1f;配置不对&#xff1f;配置…

Leetcode--174. 地下城游戏

一些恶魔抓住了公主&#xff08;P&#xff09;并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士&#xff08;K&#xff09;最初被安置在左上角的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正…

[jQuery] 判断复选框checkbox是否选中checked

返回值是true/false method 1: $("#register").click(function(){if($("#accept").get(0).checked){alert($("#accept").get(0).checked);}else{alert($("#accept").get(0).checked);}});// 其中accept为复选框的id. 或者可以替换为: …

Nature:2020年10大科学发现

文章来源&#xff1a;新浪探索在2020年即将结束之际&#xff0c;《自然》&#xff08;Nature&#xff09;杂志盘点了今年发表的科学新闻和研究观点&#xff0c;从中选出了十项最为重大的科学发现&#xff0c;既包括新冠病毒研究、压力如何导致白发、HIV治疗等医学方面的研究&am…

php mysql上传多张图片_PHP实现一次性多张图片上传功能

原标题&#xff1a;PHP实现一次性多张图片上传功能最近遇到一个需求&#xff0c;就是多张图片上传&#xff0c;按住Ctrl键能选择多张图片一次性上传&#xff0c;上传成功后数据库保存图片的路径及图片原来的文件名。该功能一般在比较成熟的内容编辑器插件中有&#xff0c;今天特…

Leetcode--20. 有效的括号

给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串&#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示…

【2018.6.7】阶段总结

颓废了好久-.- 不记得从什么时候开始的了吧- 1. 好像是去年初赛翻车&#xff1f;&#xff09;&#xff09;归于以外好像也是我不对&#xff0c;&#xff0c;&#xff0c;总之很多&#xff0c;&#xff0c;不对的地方吧&#xff0c;&#xff0c;&#xff0c;我&#xff0c;&am…

车联网支持实现无人驾驶的思考

来源&#xff1a;机器学习研究组订阅号/ 导读 /无人驾驶是车辆作为运载工具智能化、网联化发展的核心应用功能&#xff0c;也是车联网、智慧交通产业发展的核心应用服务。网联无人驾驶则是在车辆智能化基础上&#xff0c;通过车联网实现车与车、车与路等的互联和信息交互&#…

mysql的代码需要保存吗_php向Mysql数据库保存数据的代码

php向Mysql数据库保存数据的代码PHP如何向MySQL数据库中写入数据你知道吗&#xff1f;你对PHP向MySQL数据库中写入数据了解吗&#xff1f;下面是小编为大家带来的php向Mysql数据库保存数据的代码&#xff0c;欢迎阅读。php向Mysql数据库保存数据的代码PHP向MySQL数据库中写入数…

Leetcode--150. 逆波兰表达式求值

根据逆波兰表示法&#xff0c;求表达式的值。 有效的运算符包括 , -, *, / 。每个运算对象可以是整数&#xff0c;也可以是另一个逆波兰表达式。 说明&#xff1a; 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说&#xff0c;表达式总会得出有效数值且不存…

简论重大科学发现诞生的时机

来源&#xff1a;秦四清科学网博客。链接地址&#xff1a;http://blog.sciencenet.cn/blog-575926-1263364.html 纵观科学史&#xff0c;几乎每一项重大科学发现诞生的时机需要&#xff1a;&#xff08;1&#xff09;当时已具备足够的知识和资料储备&#xff1b;&#xff08;2&…