7集合-List Collection集合 List集合 数据结构 List集合的实现类

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

1.Collection集合

1.1数组和集合的区别【理解】(视频01) (6‘’)

  • 相同点

    都是容器,可以存储多个数据

  • 不同点

    • 数组的长度是不可变的,集合的长度是可变的

    • 数组可以存基本数据类型和引用数据类型

      集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类

1.2集合类体系结构【理解】(视频02) (3‘’)

在这里插入图片描述

Collection是单列集合的顶层接口
单列: 一次存取只能操作一个元素

Map是双列集合的顶层接口
双列: 一次存取只能操作一对元素

1.3Collection 集合概述和使用【应用】(视频03) (13‘’)

  • Collection集合概述

    • 是单例集合的顶层接口,它表示 一组对象,这些对象也称为Collection的元素
    • JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现
  • 创建Collection集合的对象

    • 多态的方式
    • 具体的实现类ArrayList
  • Collection集合常用方法

    方法名说明
    boolean add(E e)添加元素
    boolean remove(Object o)从集合中移除指定的元素
    boolean removeIf(Object o)根据条件进行移除
    void clear()清空集合中的元素
    boolean contains(Object o)判断集合中是否存在指定的元素
    boolean isEmpty()判断集合是否为空
    int size()集合的长度,也就是集合中元素的个数

自由练习-8分钟

1.4Collection集合的遍历【应用】(视频04、05、06)

  • 迭代器介绍

    • 迭代器,集合的专用遍历方式
    • Iterator iterator(): 返回此集合中元素的迭代器,通过集合对象的iterator()方法得到
  • Iterator中的常用方法

    ​ boolean hasNext(): 判断当前位置是否有元素可以被取出
    ​ E next(): 获取当前位置的元素,将迭代器对象移向下一个索引位置

  • Collection集合的遍历

    public class IteratorDemo1 {
        public static void main(String[] args) {
            //创建集合对象
            Collection<String> c = new ArrayList<>();
    
            //添加元素
            c.add("hello");
            c.add("world");
            c.add("java");
            c.add("javaee");
    
            //Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到
            Iterator<String> it = c.iterator();
    
            //用while循环改进元素的判断和获取
            while (it.hasNext()) {
                String s = it.next();
                System.out.println(s);
            }
        }
    }
    
  • 迭代器中删除的方法

    void remove(): 删除迭代器对象当前指向的元素

    注意事项 :当使用迭代器进行遍历的时候,集合本身不允许对集合进行添加或者删除. 如果非要删除,只能通过迭代器删除

    public class IteratorDemo2 {
        public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<>();
            list.add("a");
            list.add("b");
            list.add("b");
          	list.add("c");
            list.add("d");
    
            Iterator<String> it = list.iterator();
            while(it.hasNext()){
                String s = it.next();
                if("b".equals(s)){
                    //指向谁,那么此时就删除谁.
                    it.remove();
                }
            }
            System.out.println(list);
        }
    }
    

自由练习-8分钟

1.5增强for-基本格式【应用】(视频07) (6‘’)

  • 介绍

    • 它是JDK5之后出现的,其内部原理是一个Iterator迭代器
    • 实现Iterable接口的类才可以使用迭代器和增强for
    • 简化数组和Collection集合的遍历
  • 格式

    ​ for(集合/数组中元素的数据类型 变量名 : 集合/数组名) {

    ​ // 已经将当前遍历到的元素封装到变量中了,直接使用变量即可

    ​ }

  • 代码

    public class MyCollectonDemo1 {
        public static void main(String[] args) {
            ArrayList<String> list =  new ArrayList<>();
            list.add("a");
            list.add("b");
            list.add("c");
            list.add("d");
            list.add("e");
            list.add("f");
    
            //1,数据类型一定是集合或者数组中元素的类型
            //2,str仅仅是一个变量名而已,在循环的过程中,依次表示集合或者数组中的每一个元素
            //3,list就是要遍历的集合或者数组
            for(String str : list){
                System.out.println(str);
            }
        }
    }
    

1.6增强for-注意点【应用】(视频08) (4‘’)

  1. 修改第三方变量的值不会影响到集合中的元素

    public static void main(String[] args) {
        ArrayList<String> list =  new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
    
        for(String str : list){
            str = "q";
            System.out.println(str);
        }
    
        System.out.println(list);
    }
    
  2. 三种循环的使用场景

    普通for:
    	如果需要操作索引,使用普通for循环
    迭代器:
    	如果在遍历过程中需要删除元素时,使用迭代器
    增强for:
    	如果仅仅想遍历,那么使用增强for
    
  3. 增强for一定是迭代器的简写模式么?

    不一定
    单列集合(list set) : 增强for底层是迭代器
    数组: 增强for底层还是普通for循环
    

1.7Collection-练习【练习】(视频09) (4‘’)

public static void main(String[] args) {
    ArrayList<Student> list = new ArrayList<>();

    Student s1 = new Student("小皮同学",23);
    Student s2 = new Student("小路同学",31);
    Student s3 = new Student("小贾同学",33);

    list.add(s1);
    list.add(s2);
    list.add(s3);


    //迭代器的方式进行遍历
    Iterator<Student> it = list.iterator();
    while(it.hasNext()){
        Student s = it.next();
        System.out.println(s);
    }

    System.out.println("-------------------------");
    //增强for
    for (Student student : list) {
        System.out.println(student);
    }
}

自由练习-8分钟

2.List集合

2.1List集合的概述和特点【记忆】(视频10) (4‘’)

  • List集合的概述
    • 有序集合,这里的有序指的是存取顺序
    • 用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素
    • 与Set集合不同,列表通常允许重复的元素
  • List集合的特点
    • 存取有序
    • 可以重复
    • 有索引

2.2List集合的特有方法【了解】(视频11) (7‘’)

  • 方法介绍

    方法名描述
    void add(int index,E element)在此集合中的指定位置插入指定的元素
    E remove(int index)删除指定索引处的元素,返回被删除的元素
    E set(int index,E element)修改指定索引处的元素,返回被修改的元素
    E get(int index)返回指定索引处的元素
  • 示例代码

    public class MyListDemo {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("aaa");
            list.add("bbb");
            list.add("ccc");
            //method1(list);
            //method2(list);
            //method3(list);
            //method4(list);
        }
    
        private static void method4(List<String> list) {
            //        E get(int index)		返回指定索引处的元素
            String s = list.get(0);
            System.out.println(s);
        }
    
        private static void method3(List<String> list) {
            //        E set(int index,E element)	修改指定索引处的元素,返回被修改的元素
            //被替换的那个元素,在集合中就不存在了.
            String result = list.set(0, "qqq");
            System.out.println(result);
            System.out.println(list);
        }
    
        private static void method2(List<String> list) {
            //        E remove(int index)		删除指定索引处的元素,返回被删除的元素
            //在List集合中有两个删除的方法
            //第一个 删除指定的元素,返回值表示当前元素是否删除成功
            //第二个 删除指定索引的元素,返回值表示实际删除的元素
            String s = list.remove(0);
            System.out.println(s);
            System.out.println(list);
        }
    
        private static void method1(List<String> list) {
            //        void add(int index,E element)	在此集合中的指定位置插入指定的元素
            //原来位置上的元素往后挪一个索引.
            list.add(0,"qqq");
            System.out.println(list);
        }
    }
    

3.数据结构

数据结构: 数据在电脑中的存储形式

3.1数据结构之栈和队列【了解】(视频12) (6‘’)

  • 栈结构

    ​ 先进后出
    在这里插入图片描述

  • 队列结构

    ​ 先进先出
    在这里插入图片描述

3.2数据结构之数组和链表【了解】(视频13) (11‘’)

  • 数组结构

    ​ 查询快、增删慢

在这里插入图片描述

  • 链表结构

    ​ 查询慢、增删快

    ​ 图 - 添加数据
    在这里插入图片描述

           图 - 查询数据
    

在这里插入图片描述

  • 数组和链表结构对比图

在这里插入图片描述

4.List集合的实现类

4.1List集合子类的特点【记忆】(视频14、15)

  • ArrayList集合

    ​ 底层是数组结构实现,查询快、增删慢

  • LinkedList集合

    ​ 底层是链表结构实现,查询慢、增删快

4.2LinkedList集合的特有功能【了解】(视频16) (5‘’)

  • 特有方法

    方法名说明
    public void addFirst(E e)在该列表开头插入指定的元素
    public void addLast(E e)将指定的元素追加到此列表的末尾
    public E getFirst()返回此列表中的第一个元素
    public E getLast()返回此列表中的最后一个元素
    public E removeFirst()从此列表中删除并返回第一个元素
    public E removeLast()从此列表中删除并返回最后一个元素
  • 示例代码

    public class MyLinkedListDemo4 {
        public static void main(String[] args) {
            LinkedList<String> list = new LinkedList<>();
            list.add("aaa");
            list.add("bbb");
            list.add("ccc");
    //        public void addFirst(E e)	在该列表开头插入指定的元素
            //method1(list);
    
    //        public void addLast(E e)	将指定的元素追加到此列表的末尾
            //method2(list);
    
    //        public E getFirst()		返回此列表中的第一个元素
    //        public E getLast()		返回此列表中的最后一个元素
            //method3(list);
    
    //        public E removeFirst()		从此列表中删除并返回第一个元素
    //        public E removeLast()		从此列表中删除并返回最后一个元素
            //method4(list);
          
        }
    
        private static void method4(LinkedList<String> list) {
            String first = list.removeFirst();
            System.out.println(first);
    
            String last = list.removeLast();
            System.out.println(last);
    
            System.out.println(list);
        }
    
        private static void method3(LinkedList<String> list) {
            String first = list.getFirst();
            String last = list.getLast();
            System.out.println(first);
            System.out.println(last);
        }
    
        private static void method2(LinkedList<String> list) {
            list.addLast("www");
            System.out.println(list);
        }
    
        private static void method1(LinkedList<String> list) {
            list.addFirst("qqq");
            System.out.println(list);
        }
    }
    
JAVA初级之集合List集合 Collection集合概述是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素它是单值集合的根接口,如果想使用Collection集合中的功能,需要创建该接口的子类。创建Collection集合的对象多态的方式具体的实现类ArrayListList集合的概述有序集合,这里的有序指的是存取顺序用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素与Set集合不同,列表通常允许重复的元素List集合的特点存取有序可以重复有索引。 阅读详情

相关推荐

java集合CollectionList、Set详解

java高级之集合 文章目录java高级之集合概述集合 VS 数组数组集合整体概述Collection接口常用方法迭代器迭代器中的方法源码简单分析循环List接口概述常用方法实现类:ArrayList实现类:LinkedList实现类:VectorList接口总结Set接口概述实现类:HashSet实现类:LinkedHashSet实现类:TreeSetSet接口总结 概述 万事万物皆对象,我们可以使用数组来存储对象但存在一些弊端。 集合就像是一种java容器,可以动态的存储多个对象,可以把它理解为是动态

三筒记的博客 811

第七天:Collection单列集合及其子类list的应用和底层算法分析

1.Collection集合 1.1数组和集合的区别 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 1.2集合类体系结构 1.3Collection 集合概述和使用 Collection集合概述 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素 JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如

qq_38250571的博客 274

Python3:集合的操作(list、set、dict的操作)

当前操作来源于:自学,通过自己.方式实现 1.list的操作 1.创建一个list strList=[] strList=list() 2.添加数据操作 strList.append("张三") # 这里直接在末尾追加数据 strList.insert(0, "张三") # 这里是直接在下标中插入数据 strList.extend(["张三", "李四", "王五"]) #直接在集合的末尾...

编程学习者的博客 974

python list的函数

1. list.append(obj) 在列表末尾添加新的对象 2. list.count(obj) 统计某个元素在列表中出现的次数 3. list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) 4. list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 5. list.insert(index,ob...

dili8870的博客 808

Python 中的 list、tuple、set、dict的底层实现的理解

Python 中的 list、tuple、set、dict的底层实现的理解

星哲最开心 1173

Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()

接下来的两篇是讲可变数据类型,本篇先讲list,它是python中最基本的数据类型,它的元素可以任何python数据类型。

我先测了 474

怎么遍历list集合赋值_Java 集合入门知识

参考了网上很多大佬的博客,只能夸夸自己太菜了,不说了,进入正题.和数组一样,集合也是存储数据的,但是两者有区别,先来说下.数组和集合的区别1, 数组中存储的数据类型是相同的,集合可以不同.2, 数组的长度是确定的,而集合是不确定的.接下来我们认识一下集合.集合存储数据有两个顶层接口,一个是 Collection 接口,用于存储单个元素的集合,一个是Map 接口,存储键值对映射.认识集合丑丑的结构图...

weixin_39539807的博客 2061

Java集合

文章目录 1.常见的集合 Java集合类主要由两个根接口Collection和Map派生出来的,Collection派生出了三个子接口:List、 Set、Queue(Java5新增的队列),因此Java集合大致也可分成List、Set、Queue、Map四种接口体系。 注意: Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是它的子类,比如 List、Set 等。 Collections 是一个包装类,包含了很多静态方法,不能被实例...

dayu199804的博客 631

java面试题-集合

在 JDK 8 中,对于 key 的 hash 值,不再采用传统的取模运算(%)计算哈希桶的索引,而是采用了一种新的方式,使用 key 的 hash 值高位和低位进行异或运算,以此来增加哈希桶的分布性。具体来说,如果在对 ArrayList 进行迭代操作的同时,对其进行增删改操作,会导致 ArrayList 的 modCount(修改次数)和迭代器的 expectedModCount(预期的修改次数)不一致,迭代器会立即抛出 ConcurrentModificationException 异常。

m0_74825678的博客 1733

Java集合框架面试核心考点与深度解析

Java集合框架是Java开发者必须掌握的核心技术之一,它通过Collection和Map两大接口体系提供了丰富的数据结构实现。从数据结构原理来看,ArrayList基于动态数组实现随机访问O(1)特性,LinkedList采用双向链表优化插入删除操作,HashMap则通过哈希表+红黑树实现高效键值存储。在并发场景下,ConcurrentHashMap的分段锁和CAS机制展现了Java集合的线程安全解决方案。这些设计在电商系统、缓存实现等高频并发场景中具有重要价值。针对面试场景,特别需要关注HashMap扩

weixin_33755649的博客 339

java学习笔记(十三):Collection集合List集合List集合实现类、泛型、Set集合、TreeSet集合、Map集合、HashMap集合、TreeMap集合

Collection集合概述是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现创建Collection集合的对象多态的方式具体的实现类ArrayListCollection集合常用方法方法名说明添加元素从集合中移除指定的元素根据条件进行移除清空集合中的元素判断集合中是否存在指定的元素判断集合是否为空int size()集合的长度,也就是集合中元素的个数。

weixin_62764364的博客 1202

CollectionList集合

Collection集合 1.集合体系结构 集合类的特点: 提供一种储存空间可变的储存模型,存储的数据容量可以随时发生改变 集合类体系结构图: 2.Collection集合概念和基本使用

itxiaofei_11的博客 1862

Java中的单列集合CollectionList集合,set集合,和数据结构

集合 集合1. 集合的由来2. 集合和数组的区别?3. 集合的功能1. 导包2. 创建集合(collection)对象3. 集合(collection)基本操作4. 集合转数组:toArray5. 迭代:iterator6. 迭代器(遍历)4. List集合1.导包2.创建list集合对象3.获取指定下标对应的元素4.获取(List集合)迭代器5.元素取代(add)和添加(set)6.移出指定下标和指定集合5.set集合1.导包2.案例分析 1. 集合的由来 容器(数组和StringBuffer),数组的

qq_49641620的博客 1532

Java集合类之Collection

本文介绍了Java集合类之Collection接口实现类的相关知识,供个人学习使用

专注Java和MySQL领域知识分享 1341

Collection的子接口List系列集合

List集合实现类 ArrayList的底层实现原理

2302_81083129的博客 1173

Java集合类中的List、Set和Map及其实现类的详细介绍

本文主要介绍了Java集合类中的List、Set和Map及其实现类的概念和特点,并在最后对实现类是否可以为null值做了总结

青灯文案的博客 2061

集合CollectionList的详解

1.什么是集合存储对象的容器,面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式。集合的出现就是为了持有对象。集合中可以存储任意类型的对象,而且长度可变。在程序中有可能无法预先知道需要多少个对象,那么用数组来装对象的话,长度不好定义,而集合解决了这样的问题。2.集合和数组的区别数组和集合类都是容器数组长度是固定的,集合长度是可变的。数组...

最后一页 的博客 7132

Java 集合容器之Collection接口,Map接口实现类

java集合相关知识,予以记录!集合可以看作是一种容器,用来存储对象信息,所有集合类都在java.util包下,且支持多线程的集合类位于java.util.concurrent包下Java集合类主要由两个根接口派生出来,分别是Collection和Map。Java中的集合类一类是实现Collection接口;另一类是实现Map接口:Collection接口:单列集合,用来存储一个一个对象。Collection中可以容纳一组集合元素(Element)

qq_43357394的博客 542
上一篇: 6时间&异常
下一篇: 8泛型和Set TreeSet 数据结构
InLoadwetrust
博客等级 码龄5年 11粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InLoadwetrust

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值