当前位置:首页 » 《关注互联网》 » 正文

Java—List的使用【数据结构】_一朵花花

22 人参与  2022年01月25日 15:24  分类 : 《关注互联网》  评论

点击全文阅读


List - 线性表

  • List 常用方法
      • boolean add(E e) — 尾插 e
      • void add(int index,E element) — 将 e 插入到 index 位置
      • boolean addAll(Collection<? extends E> c) — 尾插 c 中的元素
      • boolean addAll(int index, Collection<? extends E> c) — 指定位置插入 c 中的元素
      • E remove(int index) — 删除 index 位置元素
      • boolean remove(Object o) — 删除遇到的第一个元素 o
      • void clear() — 清空
      • E set(int index,E element) 将下标 index 位置元素设置为 element
      • E get(int index) — 获取下标 index 位置元素
      • int indexOf(Object o) — 返回第一个 o 所在下标
      • int lastIndexOf(Object o) — 返回最后一个 o 的下标
    • 补充
      • boolean contains(Object o) — 判断 o 是否在线性表中
      • int size( ) — 获取集合中有多少个元素
      • boolean isEmpty( ) — 判断集合是否为空
      • 使用 subList 获取子序列
      • foreach 访问每个元素
      • 传统 for循环 访问每个元素
      • 使用构造方法构造出新的 List 对象

总览:

在这里插入图片描述

List 接口继承于Collection接口
List 特指:线性表这一类数据结构,而List的典型实现有:Vector,ArrayList 和 LinkedList三个
其中 Vector 和 ArrayList 表示顺序表,而 LinkedList 表示链表

List 常用方法

boolean add(E e) — 尾插 e

public static void main(String[] args) {
	List<String> list = new ArrayList<>();
	list.add("Java");
}

在这里插入图片描述

void add(int index,E element) — 将 e 插入到 index 位置

public static void main(String[] args) {
	List<String> list = new ArrayList<>();
	list.add(1,"Yolo!");
}

在这里插入图片描述

boolean addAll(Collection<? extends E> c) — 尾插 c 中的元素

将指定集合中的所有对象添加到该集合中, c 表示是要添加到该列表中的元素的集合

? 表示通配符,extends E,表示插入的元素必须是 E 或 其子类

List<String> list = new ArrayList<>();
Collection<String> collection = new ArrayList<>();
collection.add("Hello");
collection.add("World");
list.addAll(collection);

输出结果:

在这里插入图片描述

boolean addAll(int index, Collection<? extends E> c) — 指定位置插入 c 中的元素

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Java");
    list.add(1,"Yolo");

    Collection<String> collection = new ArrayList<>();
    collection.add("Hello");
    collection.add("World");
    list.addAll(0,collection);
    System.out.println(list);
}

输出结果:

在这里插入图片描述

E remove(int index) — 删除 index 位置元素

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Java");
    list.add(1,"Yolo");
    
    list.remove(0);
    System.out.println(list);
}

输出结果:

在这里插入图片描述

boolean remove(Object o) — 删除遇到的第一个元素 o

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");
    
    System.out.println(list);
    list.remove("Yolo");
    System.out.println(list);
}

输出结果:

在这里插入图片描述

void clear() — 清空

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("Yolo");
        list.add("Java");
        
        System.out.println("清空前:" + list);
        list.clear();
        System.out.println("清空后:" + list);
    }

输出结果:

在这里插入图片描述

E set(int index,E element) 将下标 index 位置元素设置为 element

此处注意,下标不能越界

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");

    System.out.println("修改前:" + list);
    list.set(1,"Codeing");
    System.out.println("修改后:" + list);
}

输出结果:

在这里插入图片描述

E get(int index) — 获取下标 index 位置元素

此处注意,下标不能越界

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");
    System.out.println(list);
    
    System.out.println(list.get(0));
}

int indexOf(Object o) — 返回第一个 o 所在下标

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");
    System.out.println(list)

    int index = list.indexOf("Yolo");
    System.out.println("第一个Yolo所在下标:" + index);
}

输出结果:

在这里插入图片描述

int lastIndexOf(Object o) — 返回最后一个 o 的下标

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");
    System.out.println(list);

    int lastIndex = list.lastIndexOf("Yolo");
    System.out.println("最后一个Yolo所在下标:" + lastIndex);
}

输出结果:

在这里插入图片描述

补充

boolean contains(Object o) — 判断 o 是否在线性表中

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");
    System.out.println(list);

    System.out.println(list.contains("Java"));
}

输出结果:

在这里插入图片描述

int size( ) — 获取集合中有多少个元素

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");
    System.out.println(list);

    System.out.println(list.size());
}

输出结果:3

boolean isEmpty( ) — 判断集合是否为空

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");
    System.out.println(list);

    System.out.println(list.isEmpty());
    list.clear();
    System.out.println(list.isEmpty());
}

输出结果:

在这里插入图片描述

使用 subList 获取子序列

原型:List subList(int fromIndex,int toIndex) — 截取部分 list
.
包含下标为 fraoIndex的元素,不包含下标为toIndex的元素

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");
    System.out.println(list);
    
    System.out.println(list.subList(0, 2));
}

输出结果:

在这里插入图片描述

foreach 访问每个元素

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");
    System.out.println(list);

    for(String s : list){
        System.out.println(s);
    }
}

输出结果:

在这里插入图片描述

传统 for循环 访问每个元素

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Yolo");
    list.add("Java");
    list.add(2,"Yolo");
    System.out.println(list);

    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }
}

输出结果:

在这里插入图片描述

使用构造方法构造出新的 List 对象

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Cpp");
    list.add("Java");
    list.add("Python");
    list.add("C#");
    System.out.println(list);
    //拷贝一份 list,即:将list拷贝一份给list2
    List<String> list2 = new ArrayList<>(list);
    System.out.println(list2);
}

思考: 此处为深拷贝还是浅拷贝?

首先,想到的就是 修改 list 的元素,查看 list2 中是否发生改变

List<String> list2 = new ArrayList<>(list);
System.out.println("拷贝了一份list:");
System.out.println(list2);

list.set(0,"PHP");
System.out.println(list2);

在此处,并不可行,因为在Java中,String类是不可变的

验证是否为深拷贝
需要给 list 泛型参数填一个可变对象的类型才可以,此处也可使用StringBulider

注意:
set 和 get,对于 LinkedList 和 ArrayList均有效
若是ArrayList随机访问比较高效,若是LinkedList这样的操作比较低效

在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/33895.html

下标  元素  输出  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 秦见鹿秦临渊结局+番外必读文全书免费秦见鹿秦临渊结局+番外必读文全书免费
  • (番外)+(全书)错位时空的恋人+后续+结局(苏璃沈星澜)全书在线_错位时空的恋人+后续+结局免费列表_笔趣阁(苏璃沈星澜)
  • 「被卖十亿后,她的马甲亮啦」章节彩蛋限时释出‌_花落牧轻舟小说章节分享
  • 周语徐西洲(爱已戛然而止全书+后续+结局)全书周语徐西洲读结局_(周语徐西洲爱已戛然而止全书+后续+结局读全书结局)结局列表_笔趣阁(周语徐西洲)
  • 重生妹妹与自闭症哥哥(沈寒舟沈清然)全书沈寒舟沈清然结局_沈寒舟沈清然+结局列表_笔趣阁(重生妹妹与自闭症哥哥全书+后续)
  • 给五十任夫君过喜的任务娘交给我了,许莺莺列表_给五十任夫君过喜的任务娘交给我了,许莺莺
  • [恋爱脑养女被全网网暴]章节世界观揭秘篇‌_[陆琦温言魏敛]章节试读
  • 「外婆葬身火海那夜,失忆男友终于悔悟」后续全文免费阅读_[沈也苏漾温言]角色专属支线试读入口
  • 全书浏览她已走远后续+(苏然霍霆舟)_她已走远后续+(苏然霍霆舟)全书结局
  • 我再一次见到霍霆舟,是在酒吧。医院部门聚会。我们的包房,正好在霍霆舟他们旁边。年轻的罗医生却喝了酒,在走廊看见路过的叶南,要她的微信。
  • 龚亦遥(老公让我为白月光挡灾,我死后他一夜疯魔)_龚亦遥列表_笔趣阁(老公让我为白月光挡灾,我死后他一夜疯魔)
  • 秦彦琛(半生烟雨终不见)结局_(秦彦琛半生烟雨终不见全书结局)结局列表_笔趣阁(秦彦琛)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1