List接口下的集合
集合框架
List接口下的集合特点: Set接口下的集合特点:
1.都是有序的 1.都是无序的 2.都有下标 2.没有下标
3.都可以重复 3.不可重复(覆盖)
List接口下的集合
1.ArrayList
ArrayList list = new ArrayList();//长度可加,但加了也是0
//集合的长度 size() 数组的长度 数组名.length 是一个属性 字符串长度 名.length() 是一种方法
//集合的长度在初始化的时候为0,当添加第一个数据的时候,会给一个默认的长度10,当添加的数据超过了10个,长度(10转换为2进制)会向右移动一位。长度也有一个最大值!
System.out.println(list.size()) //0
//添加,可以添加重复的数据,也可以添加null,且会占用长度
list.add(111);
list.add(22.2);
list.add(true);
list.add("aaa");
list.add('v');
list.add(null);
//按指定位置添加:list.add(index,添加的数据) 注意:index不能超出原集合的最大长度
list.add(2,333)
//通过下标来获取集合中的每个值: list.get(下标)
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//集合的删除
//针对非int类型
list.remove("aaa");
System.out.println("==================" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//删除int类型的值,必须使用封装类
list.remove(new Integer(111));
System.out.println("=======================" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//集合的修改
//list.set(下标,新的值)
list.set(0, 222);
System.out.println("====================" + list.size());
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//查找集合中的某个值indexOf,lastIndexOf 返回指定数据第一次被查找到在集合中的下标
//如果没有找到返回-1
System.out.println(list.lastIndexOf("aaa"));
System.out.println(list.lastIndexOf(null));
//查找集合中是否有某个值,找到返回true,否则false
System.out.println(list.contains(null)); //判断集合是否为空
System.out.println(list.isEmpty());
System.out.println(list.size());
//清空集合中所有的元素
list.clear();
System.out.println(list.size());
2.Vector
和ArrayList差不多,但已经不用了。
Vector 和ArrayList的区别:
1.ArrayList中的方法和实现和Vector基本一样,底层都是数组的实现。
2.Vector中的方法都是线程安全的,ArrayList没有考虑线程问题。
3.ArrayList在一些算法上做了优化,提高了效率。
3.Stack
和Vector差不多,也已经不用了。
4.LinkList
LinkedList linkedList = new LinkedList();
linkedList.add("aaa");
linkedList.add("bbb");
linkedList.add("ccc"); linkedList.remove("ccc"); for (int i = 0; i < linkedList.size() ; i++) {
System.out.println(linkedList.get(i));
}
linkedList.addFirst("ffff");
linkedList.removeLast();
LinkList 和ArrayList的区别:
1.ArrayList底层是数组的实现,LinkedList底层是链表的实现 1.1 在java中链表就是自己实现了一个类,在类中记录了前一个和后一个的地址 每次查找都需要找到前一个或者后一个才能往前或者往后找到 2.ArrayList查找速度快,但是删除和插入的速度慢 3.LinkedList删除和插入的速度快,但是查询速度较慢 4.LinkedList有自己独有的addFirst addLast removeLast removeFirst的方法
链表:
在java中链表就是自己实现了一个类,在类中记录了前一个和后一个的地址
List接口下的集合的更多相关文章
- Map接口下的集合和泛型理解
一.Map接口 1. Map接口就是最顶层了,上面没有继承了.Map是一个容器接口,它与前面学的List.Set容器不同的是前面学的这些容器,一次只能传入一个元素,但是Map容器一次可以传入一对元素( ...
- Set接口下的集合
一.集合(定义字段的时候统一使用包装类) 1.集合大类分为List.Set.Map三种,其中,List集合是有序可重复的,并且可以使用普通for循环.增强for循环.正向迭代器.双向迭代器:Set集合 ...
- C# 通过IEnumberable接口和IEnumerator接口实现自定义集合类型foreach功能
1.IEnumerator和IEnumerable的作用 其实IEnumerator和IEnumerable的作用很简单,就是让除数组和集合之外的类型也能支持foreach循环,至于foreach循环 ...
- .net 下的集合
集合的操作在编码的时候很常见.但是由于经常使用几种集合.而忽略了一些不常用的集合.在这里我整理下. 首先先了解下接口: 1.IEnumerable,返回一个循环访问集合的枚举器. 2.IEnumera ...
- 容器之List接口下各实现类(Vector,ArrayList 和LinkedList)的线程安全问题
Vector .ArrayList 和LinkedList都是List接口下的实现类,但是他们之间的区别和联系是什么呢? 首先: 然后: 如果您仅仅想知道结论,那么可以关闭了. 下面我讨论讨论为什么. ...
- IIC接口下的24C02 驱动分析
本节来学习IIC接口下的24C02 驱动分析,本节学完后,再来学习Linux下如何使用IIC操作24C02 1.I2C通信介绍 它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据,是一个多 ...
- [知了堂学习笔记]_集合接口list与集合接口set的区别
在Java中 除了 Map以外的集合的根接口都是Collection接口,而在Collection接口的子接口中,最重要的莫过于List和Set集合接口. 今天我们就来谈谈List集合接口与Set集合 ...
- C++下实现同接口下多个类作为参数的调用和传参
/* 实现同接口下不同类的对象的转移 定义类的接口 定义多个继承该接口的类 定义管理类,把接口当作类型, 传入该接口下各种类的对象,进行操作 */ #include<iostream> # ...
- 集合接口list与集合接口set的区别
在Java中 除了 Map以外的集合的根接口都是Collection接口,而在Collection接口的子接口中,最重要的莫过于List和Set集合接口. 今天我们就来谈谈List集合接口与Set集合 ...
随机推荐
- Asp.net Core 系列之--3.领域、仓储、服务简单实现
ChuanGoing 2019-11-11 距离上篇近两个月时间,一方面时因为其他事情耽搁,另一方面也是之前准备不足,关于领域驱动有几个地方没有想通透,也就没有继续码字.目前网络包括园子里大多领域驱 ...
- js+css3实现多行图片点击(自动)左右无缝轮播特效
/*效果图*/ HTML: <div class="scroll"> <div class="picbox"> ...
- 如何在vue-cli项目中结合mockjs模拟假数据
1.前言 在如今前后端分离的开发方式已被广泛采用的今天,前端同学和后端同学各自独立开发,后端提供数据接口,前端调用接口获取数据渲染页面.但是在实际开发中,后端开发由于逻辑相对复杂接口迟迟提供不到位,而 ...
- git 生成密匙时遇到报错 :Too many arguments.
今天在我用新电脑想要向github上的远程库上传项目时,由于新电脑上的本地库没有与远程库建立连接,所以要在本地生成密匙添加到github上才可以上传,在我执行命令 ssh-keygen -t rsa- ...
- Docker 开篇2 | 树莓派安装docker 续
问题1:安装后出现错误Error! The dkms.conf for this module includes a BUILD_EXCLUSIVE directive which does not ...
- windsServer2008设置定时重启
点击“开始”——“管理工具”——“任务计划程序”. 右键“任务计划程序库”——“创建任务”. 输入计划名称.描述和安全选项(如下图). 点击触发器,点击“新建…”,输入计划周期和时间(如下图):无误后 ...
- 每天3分钟操作系统修炼秘籍(13):两个缓冲空间Kernel Buffer和IO Buffer
两个缓冲空间:kernel buffer和io buffer 先看一张图,稍后将围绕这张图展开描述.图中的fd table.open file table以及两个inode table都可以不用理解, ...
- 018.Kubernetes二进制部署插件coredns
一 修改配置文件 1.1 下载解压 [root@k8smaster01 ~]# cd /opt/k8s/work/kubernetes/ [root@k8smaster01 kubernetes]# ...
- pat 1149 Dangerous Goods Packaging(25 分)
1149 Dangerous Goods Packaging(25 分) When shipping goods with containers, we have to be careful not ...
- Centos内核参数优化
关于内核参数优化 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_ ...