List集合详细介绍
目录
List集合概述
一.List集合的特点
二.遍历方式
三.LinkedList实现堆栈容器
四.增长因子
List集合概述
List集合是一个元素有序(每个元素都有对应的顺序索引,第一个元素索引为0)、且可重复的集合。
一.List集合的特点
1.list集合容器具备增删改查
2.有序
3.元素可重复
package com.liao.tast;import java.util.ArrayList;
import java.util.List;/*** list集合的特点 * * 1.list集合容器具备增删改查* 2.有顺序* 3.元素可以重复* @author liao**/
public class Dome1 {public static void main(String[] args) {List list = new ArrayList();//增加list.add("a");list.add("b");list.add("c");System.out.println(list);//删除list.remove("b");System.out.println(list);//修改list.set(1, "v");//查看System.out.println(list);}}
二.遍历方式
1.forir
2.foreach
3.迭代器 iteration
package com.liao.tast;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*** List的循环方式* 1.forir * 2.foreach* 3.迭代器 iteration* * * @author Administrator**/
public class Dome2 {public static void main(String[] args) {List list = new ArrayList();// 增加list.add("a");list.add("b");list.add("c");// forir遍历for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}// foreach遍历for (Object object : list) {System.out.println(object);}// 迭代器遍历Iterator it = list.iterator();while (it.hasNext()) {System.out.println(it.next());}}}
三.LinkedList实现堆栈容器
package com.liao.tast;
/*** LinkedList实现堆栈容器* @author liao**/import java.util.LinkedList;public class Dome3 {public static void main(String[] args) {/*** LinkedList特点 * 链表方式* 查询修改速度慢 增加删除快* */LinkedList ll = new LinkedList();//增加ll.add("a");ll.add("b");ll.add("c");//实例化DuiZhanDuiZhan dz = new DuiZhan(ll);//弹栈System.out.println(dz.pop());System.out.println(dz.pop());System.out.println(dz.pop());}
}//创建一个类DuiZhanclass DuiZhan {private LinkedList ll;public DuiZhan(LinkedList ll) {super();this.ll = ll;}//压栈 弹栈public Object pop(){return ll.removeLast();}}
运行结果:
堆栈特点:先进后出,意思是先进去的数据会最后输出
四.增长因子
1.数组长度不可改变 但是集合长度可以扩容
优化前:数据到达长度上限就会一直增长扩容就会导致会影响性能
package com.liao.tast;
/*** list调优* ArrayList* @author Administrator* ArrayList扩容因子1.5 增长因子0.5*/import java.lang.reflect.Field;
import java.util.ArrayList;
//ArrayList特点:查询修改快 增加删除慢
public class Dome4 {
public static void main(String[] args) throws Exception, Exception {//定义ArrayList数组//没有优化前ArrayList list = new ArrayList();for (int i = 0; i < 100; i++) {list.add(list);System.out.print(i+"\r");getCurrentArrayLength(list);}}
//获取当前数组的长度
private static void getCurrentArrayLength(ArrayList list) throws Exception, SecurityException {Field f = list.getClass().getDeclaredField("elementData");f.setAccessible(true); Object[] object = (Object[]) f.get(list);System.out.println("当前容器长度"+object.length);
}}
运行结果:
优化后:指定长度就可以优化
package com.liao.tast;
/*** list调优* ArrayList* @author Administrator* ArrayList扩容因子1.5 增长因子0.5*/import java.lang.reflect.Field;
import java.util.ArrayList;
//ArrayList特点:查询修改快 增加删除慢
public class Dome4 {
public static void main(String[] args) throws Exception, Exception {//定义ArrayList数组//优化后ArrayList list = new ArrayList(50);//到50在进行扩容for (int i = 0; i < 100; i++) {list.add(list);System.out.print(i+"\r");getCurrentArrayLength(list);}}
//获取当前数组的长度
private static void getCurrentArrayLength(ArrayList list) throws Exception, SecurityException {Field f = list.getClass().getDeclaredField("elementData");f.setAccessible(true); Object[] object = (Object[]) f.get(list);System.out.println("当前容器长度"+object.length);
}}
运行结果:
结论:数组长度每次增加到最大值就会扩容
List集合详细介绍相关推荐
- 猿创征文|【JavaSE】Map集合详细介绍
目录 Map集合 概述 结构继承图 继承图详细介绍 Map接口中常用方法 put方法 remove方法 get方法 containsKey方法 Map集合两种遍历方式[重点] 键找值方式 键值对方式 ...
- Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
转载自 Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例 第1部分 ArrayList介绍 ArrayList简介 ArrayList 是一个数组队列,相当于 动态数组.与 ...
- java输出set集合元素_java Set集合,HashSet类详细介绍
下面要给大家介绍的就是java Set集合方面的内容,本文主要讲到了HashSet类的一些知识,主要包括了HashSet类的特点,HashSet 类的常用构造方法重载形式以及代码演示了创建两种不同形式 ...
- SQL Server 2005实现负载均衡的详细介绍
SQL Server 2005实现负载均衡的详细介绍 SQL Server 2005仍然不直接地支持负载均衡--但是它为以前SQL Server版本中可用的所有负载均衡方法提供了令人激动的改善和支持. ...
- StringUtils常用方法+StringUtils详细介绍
StringUtils用法+StringUtils详细介绍 博文来源:http://yijianfengvip.blog.163.com/blog/static/1752734322012122219 ...
- hibernate主键详细介绍
hibernate主键详细介绍 /** * * @author liuguangyi * @content ejb3注解的API定义在javax.persistence.*包里面. * * 注释说明: ...
- 红黑树(一)之 原理和算法详细介绍---转帖
目录 1 红黑树的介绍 2 红黑树的应用 3 红黑树的时间复杂度和相关证明 4 红黑树的基本操作(一) 左旋和右旋 5 红黑树的基本操作(二) 添加 6 红黑树的基本操作(三) 删除 作者:Sky W ...
- pythontuple数据类型_Python数据类型之元组的详细介绍
本篇文章给大家带来的内容是关于Python数据类型之元组的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.元组的概念python中的元组是有序元素组成的集合,与列表的区别 ...
- SpringBoot 缓存之 @Cacheable 详细介绍
一.简介 1.缓存介绍 Spring 从 3.1 开始就引入了对 Cache 的支持.定义了 org.springframework.cache.Cache 和 org.springframework ...
最新文章
- Hibenate工具类(实现增/删/改/查)
- nyoj117求逆序数 并归排序法
- linux c ftp断点续传,求个支持断点续传的ftp脚本
- jQuery、jQury UI、jQuery Mobile----读书笔记
- shiro学习(3):用户权限
- abaqus生成adams柔性体_基于ADAMS 的大型反铲挖泥机加装破碎锤 结构动力学分析
- 安装docker desktop for windows启动时报错
- demo:flask进行模型部署 | ros接收点云流 | Web接收三路视频流及局部刷新——>显示效果展示
- html5,css3, bootstraps
- Hard To Get歌词分析
- java io学习 IO流的分类
- 计算机多媒体技术广泛应用于各个领域,新时期计算机多媒体技术的应用与发展趋势研究...
- 初级计算机硬件试题,初级计算机考试题库
- 如何用命令行和carbite c++生成sis文件
- 论文阅读:Generating Talking Face Landmarks from Speech
- 拿它们练Python爬虫,是在法律边缘试探吗?爬虫圈香饽饽之视频网站的评论区采集
- 2021年美容师(初级)报名考试及美容师(初级)模拟考试题
- 网络维护类岗位做什么?
- Linux Ethernet PHY 驱动
- Kotlin ?.let 、!! 、?:等运算符的使用
热门文章
- 智能语音电话机器人 快速拨打Restful接口
- Karhunen-Loeve Transform (KLT) 原理及PCA应用
- Laravel-API实践教程
- 一行代码实现 ofo app 首次注册时的步骤控件
- 目前常用的医疗心电图数据集
- Apollo-3.0本地编译
- Windows 终端 | Windows Terminal | 一款强大且高效的终端应用程序
- 计算机如何配置速度快,几种简单设置让电脑运行速度和网速变快!-怎么让电脑速度变快...
- 输出“回”型数字方阵
- 1.41亿部手机装有间谍软件! 360推国内首个CIQ查杀工具