Day36:List详解
List
1.1 概述
List为Collection的子接口,代表的一组任意对象,有序,有下标、元素可以重复。
1.2 方法
| 方法名 | 说明 |
|---|---|
| void add(int index,Object o) | 在指定位置添加元素 |
| boolean addAll(int index,Collection o) | 将一个集合的所有元素添加到指定位置 |
| Object get(int index) | 获取指定下标出的元素(根据自己需要转换返回的对象类型) |
| List subList(int fromIndex,int toIndex) | 获取指定区间下标之间的子集合元素(左闭右开) |
| ...... | ...... |
1.3 方法的使用
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class ListTest {
public static void main(String[] args){
//先创建一个List的实例 List为接口,无法直接实例,还是用多态的形式利用实现类来时实例化
List l=new ArrayList<>();//此时集合内容为空
//添加元素add
System.out.println("================add================");
l.add("苹果");
l.add("香蕉");
l.add("哈密瓜");
System.out.println(l);
//删除元素remove
System.out.println("================remove================");
//l.remove("苹果"); List有序集合即可以使用下标,我们就不采用这种删除方式
l.remove(0);
System.out.println(l);
//遍历操作
//方法1:增强for循环
System.out.println("================增强for================");
for(Object o:l){
System.out.println(o);
//因为我们的集合元素为字符串,所以打印出来没有问题,如果是一些带属性的对象,我们需要在类中重写toString方法
}
//方法2:使用普通for循环 因为List是有序的,可以使用下标
System.out.println("================for================");
for (int i = 0; i < l.size(); i++) {//注意这里是size,不是数组的长度表示length
System.out.println(l.get(i));//注意要用get方法来获取对应下标的元素
}
//方法3:使用迭代器来遍历:Iterator
System.out.println("================Iterator================");
Iterator i=l.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
//方法4:使用列表迭代器ListIterator
System.out.println("================ListIterator================");
//ListIterator同Iterator相比,功能更加丰富:可以向前、向后遍历元素;可以增加、删除、修改元素
//先创建列表迭代器
ListIterator li=l.listIterator();
//从前往后遍历元素
System.out.println("================从前往后遍历元素================");
while(li.hasNext()){
System.out.println(li.next());
}
// 从后往前遍历元素
System.out.println("================从后往前遍历元素================");
while(li.hasPrevious()){//使用hasPrevious()方法时,确保迭代器指向已经最后一个元素
System.out.println(li.previousIndex()+" "+li.previous());
}
//判断
//判断是否有某个元素contains
System.out.println("================contains================");
System.out.println(l.contains("榴莲"));
//判断集合是否为空isEmpty
System.out.println("================isEmpty================");
System.out.println(l.isEmpty());
//获取元素位置 indexOf
System.out.println("================indexOf================");
System.out.println(l.indexOf("香蕉"));
}
}
================add================
[苹果, 香蕉, 哈密瓜]
================remove================
[香蕉, 哈密瓜]
================增强for================
香蕉
哈密瓜
================for================
香蕉
哈密瓜
================Iterator================
香蕉
哈密瓜
================ListIterator================
================从前往后遍历元素================
香蕉
哈密瓜
================从后往前遍历元素================
1 哈密瓜
0 香蕉
================contains================
false
================isEmpty================
false
================indexOf================
0
注意:
- 当我们往集合里面添加基本类型时,基本类型会自动装箱
- 调用删除方法时,根据传入的参数类型不同,删除处理的方式是不一样的
List l=new ArrayList<>();
l.add(20);
l.add(30);
l.add(40);
l.add(50);
l.add(60);//当我们添加基本类型作为元素时,基本类型会自动装箱
System.out.println(l);
//remove的一些注意事项
//l.remove(20); 此时20并不是我们添加的那个元素20;remove参数传递的是元素下标值
//l.remove(0); 传递正确的下标值
l.remove(new Integer(20));
//remove方法对于传入的参数若为对象,则按对象的值进行删除自身集合中对应的值;对于传入的参数若为int类型,则按参数下标进行索引集合中的元素进行删除
[20, 30, 40, 50, 60]
[30, 40, 50, 60]
Day36:List详解的更多相关文章
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
- .NET应用和AEAI CAS集成详解
1 概述 数通畅联某综合SOA集成项目的统一身份认证工作,需要第三方系统配合进行单点登录的配置改造,在项目中有需要进行单点登录配置的.NET应用系统,本文专门记录.NET应用和AEAI CAS的集成过 ...
随机推荐
- 【ceph】理解Ceph的三种存储接口:块设备、文件系统、对象存储
文章转载自:https://blog.51cto.com/liangchaoxi/4049104
- Elasticsearch不支持事务有什么好的弥补方案
1.问题 源自星球同学的提问:es如何与hive或mysql结合使用?es不支持事务有什么好的弥补方案吗? 2.事务的核心概念 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下ACID四个 ...
- 企业微信报警中关于markdown的用法
官方文档地址:https://open.work.weixin.qq.com/api/doc/90002/90151/90853#markdown消息 请求方式:POST(HTTPS) 请求地址: h ...
- localStorage概要
在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localSt ...
- siteServer CMS知识点
1.结构说明 (1) 网站目录说明: a. 一个SitesServer后台只能建立一个主站,但可以建立多个子站,主站目录就是项目的根目录: b. 而子站的目录呢?是在主站目录下建立相应名称的目 ...
- 微信DAT文件转JPG图片(图片恢复)
微信电脑版现在已经是日常工作生活必不可少的工具,有时候删除了聊天记录或者被系统清理软件清理了,但还想查看曾经的微信聊天图片. 这个时候辛辛苦苦找到了文件,却发现无法查看,因为微信电脑版为了保护我们的隐 ...
- 一篇文章带你掌握主流办公框架——SpringBoot
一篇文章带你掌握主流办公框架--SpringBoot 在之前的文章中我们已经学习了SSM的全部内容以及相关整合 SSM是Spring的产品,主要用来简化开发,但我们现在所介绍的这款框架--Spring ...
- Hyperf 接入阿里云ACM应用配置管理中心
参考: 阿里云文档:https://help.aliyun.com/document_detail/85466.html?spm=a2c4g.11186623.6.550.43cb42d4Af4Tu0 ...
- 现有一个接口DataOperation定义了排序方法sort(int[])和查找方法search(int[],int),已知类QuickSort的quickSort(int[])方法实现了快速排序算法
欢迎大家加入我的社区:http://t.csdn.cn/Q52km 社区中不定时发红包 文章目录 1.UML类图 2.源码: 3.优缺点分析 1.UML类图 2.源码: package com.bac ...
- Dubbo-聊聊注册中心的设计
前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...