List

1.1 概述

ListCollection的子接口,代表的一组任意对象,有序,有下标、元素可以重复。

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详解的更多相关文章

  1. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  2. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  3. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  4. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  5. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  6. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  7. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  8. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  9. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

  10. .NET应用和AEAI CAS集成详解

    1 概述 数通畅联某综合SOA集成项目的统一身份认证工作,需要第三方系统配合进行单点登录的配置改造,在项目中有需要进行单点登录配置的.NET应用系统,本文专门记录.NET应用和AEAI CAS的集成过 ...

随机推荐

  1. 3.配置Grafana Dashboard

    本次我们通过部署 Grafana 来进行图形展示,Grafana 为我们提供了非常多的图形模板. Grafana 官网:https://grafana.com/ 1.下载安装 Grafana 我们使用 ...

  2. 利用 Nginx 反向代理搭建本地 yum 服务器

    在政府,医院等单位有网络安全要求,对内外网进行物理隔离,然而内网主机无法访问互联网下载安装包,通过Nginx 反向代理搭建本地yum服务器实现内网主机安装包下载. Centos 8.2 部署 Ngin ...

  3. [基础]VS Code 基础操作 命令符

    一.五种运行方式 1.点击IIS Express运行 实际上它开的是一个IIS Express服务器,就是说有一个小的代理服务器帮咱们运行,运行后就会启动一个IIS Express小型服务器,启动之后 ...

  4. python实验报告(第五周)

    一.实验目的和要求 学会使用字符串的常用操作方法和正确应用正则表达式. 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例1:使用字符串拼接输出一个关于程序员的笑话 ...

  5. PHP全栈开发:在本机上创建虚拟主机与域名

    如何在windows+wamp环境上进行自己创建的网站的域名访问 step 1 在wamp的安装目录,如C:\wamp64\www\下创建自己的网站目录pe step 2 右键wamp图标,在wamp ...

  6. python的微积分运算

    import sympy sympy.init_printing() from sympy import I, pi, oo import numpy as np 求函数的导数 x = sympy.S ...

  7. 【SSM】学习笔记(二)——SpringMVC入门

    原视频链接:https://www.bilibili.com/video/BV1Fi4y1S7ix/?p=43&spm_id_from=pageDriver&vd_source=8ae ...

  8. 苹果 App Store 开始支持隐藏上架应用:只能通过链接下载

      据MacRumors报道,苹果公司最近宣布,正如其开发者网站上所概述的那样,App Store现在支持只能通过直接链接才能发现的隐藏应用.   图片来自 Apple 拥有不适合公开发布的应用的开发 ...

  9. java判断手机号三大运营商归属的工具类

    package com.tymk.front.third; import java.util.regex.Pattern; public class OperatorsUtil { /** * 中国电 ...

  10. DevExpress窗体加载等待

    using DevExpress.XtraEditors; using DevExpress.XtraSplashScreen; using System; using System.Collecti ...