首页 > 其他分享 >Day36:List详解

Day36:List详解

时间:2022-12-09 20:23:48浏览次数:47  
标签:Day36 元素 List System add 详解 println out

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,System,add,详解,println,out
From: https://www.cnblogs.com/CQliuwei/p/16969896.html

相关文章

  • os.listdir()读出来的文件顺序和本地的顺序不一致,应该怎么做呢?
    大家好,我是皮皮。一、前言前几天在帮助粉丝解决问题的时候,遇到一个简单的小需求,这里拿出来跟大家一起分享,后面再次遇到的时候,可以从这里得到灵感。二、需求澄清问题如......
  • okHttp 详解
    1.历史上Http请求库优缺点在讲述OkHttp之前,我们看下没有OkHttp的时代,我们是如何完成http请求的. 在没有OkHttp的日子,我们使用​​HttpURLConnection​​或者​​Htt......
  • Oauth2.0 协议详解(-)
    Oauth2.0(一):为什么需要Oauth2.0协议?假设有两家互联网企业A和B,其中B是一家提供相片云存储的公司。即B的用户可以把相片上传到B网站上长期保存,然后可以在不同的......
  • # yyds干货盘点 # os.listdir()读出来的文件顺序和本地的顺序不一致,应该怎么做呢?
    大家好,我是皮皮。一、前言前几天在帮助粉丝解决问题的时候,遇到一个简单的小需求,这里拿出来跟大家一起分享,后面再次遇到的时候,可以从这里得到灵感。二、需求澄清问题如下所示......
  • MYSQL explain详解
    MySQLexplain​MySQLexplain​​​explain作用​​​​explain的执行效果​​​​explain包含的字段​​​详细内容​​​id字段​​​​select_type字段​​​​type字段......
  • 详解redis网络IO模型
    前言"redis是单线程的"这句话我们耳熟能详。但它有一定的前提,redis整个服务不可能只用到一个线程完成所有工作,它还有持久化、key过期删除、集群管理等其它模块,redis会通......
  • 冒泡排序算法详解C++程序
    (1)冒泡排序算法:(BubbleSort)首先肯定是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到......
  • OC之【NSDictionary详解】
    main.m文件#import<Foundation/Foundation.h>#import"Student.h"字典的初始化void//NSDictionary是不可变的NSDictionary*dict=[NSDictionarydictionaryWit......
  • Ubuntu18.04 source.list更新国内源
    在更新源之前先作为备份sudovim/etc/apt/source.list 使用下列任意一个源即可:清华大学debhttp://mirrors.tuna.tsinghua.edu.cn/ubuntu/xenialmainrestri......
  • KubeSphere v3.3.1 权限控制详解
    作者:周文浩,青云科技研发工程师,KubeSphereMaintainer。热爱云原生,热爱开源,目前负责KubeSphere权限控制的开发与维护。KubeSphere3.3.1已经发布一个多月了。3.3.1......