Java进阶:【集合】认识集合了解简单语法 迭代器原理分析

简介: Java进阶:【集合】认识集合了解简单语法 迭代器原理分析

集合前言

数组,集合都是对多个数据进行存储操作,简称为容器


PS:这里的存储是内存层面的存储,而不是持久化存储


数组:只能存放同一种类型的数据


,长度无法更改,只能放同一种类型的数据


一旦指定了长度,那么长度就被确定,不可以更改,删除增加效率低,无法直接判断数组的实际元素的数量,需要我们自己去写,存储为有序,可重复。


如何解决数组的缺点?


用于解决数组缺点的新的存数的数据结构—>集合


什么是集合

我们有很多集合,为什么要学习这么多集合,应为不容的集合底层的数据机构不一样


将集合分为两种类型


存储方式:


一个一个数据的存储


一对一对数据的存数

1.png



colletion接口

特点:不唯一,有序


新增:add(E e)

修改:

删除:remove(Object o),clear()

查看:iterator(),size()

判断:contains(Object o),equals(Object o),isEmpty()

/*

* 新增:add(E e)

* 修改:

* 删除:remove(Object o),clear()

* 查看:iterator(),size()

* 判断:contains(Object o),equals(Object o),isEmpty()

* */



 

/*
* 新增:add(E e)
* 修改:
* 删除:remove(Object o),clear()
* 查看:iterator(),size()
* 判断:contains(Object o),equals(Object o),isEmpty()
* */
    public static void main(String[] args) {
        //接口不能创建对象:利用实现类创建
        Collection col = new ArrayList();
//        集合有一个特点,只能存放引用数据类型,不能是基本数据类型,
//        基本数据类型自动装箱,对应包装类
        col.add(18);
        col.add(12);
        col.add(15);
        System.out.println(col);
        List list = Arrays.asList(new Integer[]{2,1,3,4,5});
        col.addAll(list);
        System.out.println(col);
        col.clear();
        System.out.println(col);
        System.out.println("集合的数量:"+col.size());
        System.out.println("集合是否为空:"+col.isEmpty());
        boolean remove = col.remove(15);
        System.out.println(col);
        System.out.println("是否删除成功:"+remove);
        Collection col2 = new ArrayList();
//        集合有一个特点,只能存放引用数据类型,不能是基本数据类型,
//        基本数据类型自动装箱,对应包装类
        col2.add(18);
        col2.add(12);
        col2.add(15);
        Collection col3 = new ArrayList();
//        集合有一个特点,只能存放引用数据类型,不能是基本数据类型,
//        基本数据类型自动装箱,对应包装类
        col3.add(18);
        col3.add(12);
        col3.add(15);
        System.out.println(col2.equals(col3));

集合有一个特点,只能存放引用数据类型,不能是基本数据类型,那我们为什么加入基本类型没有报错?

解:基本数据类型自动装箱,对应包装类


遍历的两种方式

增强for循环

for (Object o : col) {
            System.out.println(o);
        }


迭代器


Iterator it = col.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }


迭代器简略原理:

2.png


3.png

list接口

list接口常用方法:


list接口的常用方法


增加:add(E e),

删除:clear(),remove(int index), remove(Object o)

修改:set(int index, E element)

查看:get(int index),size()

判断:

     

        List list = new ArrayList();
        list.add(12);
        list.add(5);
        list.add(-1);
        list.add(19);
        list.add(2);
        list.add("abc");
        System.out.println(list);
        list.add(3,14);
        System.out.println(list);
        list.set(3,77);
        System.out.println(list);
        list.remove(2); //调用这个方法参数为integer的时候,调用的是参数为index的remove方法,按照喜爱表删除
        System.out.println(list);
        list.remove("abc");
        System.out.println(list);
        Object o = list.get(0);
        System.out.println(o);
        System.out.println("-----------");
//        遍历list集合,普通for循环
        for (int i = 0; i <list.size(); i++) {
            System.out.print( list.get(i));
        }
        System.out.println("\n-----------");
        for (Object o1 : list) {
            System.out.print(o1);
        }
        System.out.println("\n-----------");
       Iterator it = list.iterator();
       while (it.hasNext()){
           System.out.print(it.next());
       }
    }

以上就是常用方法外加迭代的是那种遍历方式


相关文章
|
4天前
|
存储 安全 Java
Java一分钟之-集合框架进阶:Set接口与HashSet
【5月更文挑战第10天】本文介绍了Java集合框架中的`Set`接口和`HashSet`类。`Set`接口继承自`Collection`,特征是不允许重复元素,顺序不确定。`HashSet`是`Set`的实现,基于哈希表,提供快速添加、删除和查找操作,但无序且非线程安全。文章讨论了`HashSet`的特性、常见问题(如元素比较规则、非唯一性和线程安全性)以及如何避免这些问题,并提供了代码示例展示基本操作和自定义对象的使用。理解这些概念和注意事项能提升代码效率和可维护性。
9 0
|
4天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
7 0
|
5天前
|
算法 安全 Java
深入探索Java中的并发编程:CAS机制的原理与应用
总之,CAS机制是一种用于并发编程的原子操作,它通过比较内存中的值和预期值来实现多线程下的数据同步和互斥,从而提供了高效的并发控制。它在Java中被广泛应用于实现线程安全的数据结构和算法。
21 0
|
6天前
|
存储 安全 算法
掌握Java并发编程:Lock、Condition与并发集合
掌握Java并发编程:Lock、Condition与并发集合
11 0
|
6天前
|
存储 安全 Java
深入理解Java集合框架
深入理解Java集合框架
11 0
|
1天前
|
Java
Java中的多线程编程:基础知识与实践
【5月更文挑战第13天】在计算机科学中,多线程是一种使得程序可以同时执行多个任务的技术。在Java语言中,多线程的实现主要依赖于java.lang.Thread类和java.lang.Runnable接口。本文将深入探讨Java中的多线程编程,包括其基本概念、实现方法以及一些常见的问题和解决方案。
|
1天前
|
安全 算法 Java
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第13天】 在Java开发中,并发编程是一个复杂且重要的领域。它不仅关系到程序的线程安全性,也直接影响到系统的性能表现。本文将探讨Java并发编程的核心概念,包括线程同步机制、锁优化技术以及如何平衡线程安全和性能。通过分析具体案例,我们将提供实用的编程技巧和最佳实践,帮助开发者在确保线程安全的同时,提升应用性能。
10 1
|
2天前
|
Java 调度
Java一分钟之线程池:ExecutorService与Future
【5月更文挑战第12天】Java并发编程中,`ExecutorService`和`Future`是关键组件,简化多线程并提供异步执行能力。`ExecutorService`是线程池接口,用于提交任务到线程池,如`ThreadPoolExecutor`和`ScheduledThreadPoolExecutor`。通过`submit()`提交任务并返回`Future`对象,可检查任务状态、获取结果或取消任务。注意处理`ExecutionException`和避免无限等待。实战示例展示了如何异步执行任务并获取结果。理解这些概念对提升并发性能至关重要。
17 5
|
2天前
|
安全 Java 调度
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第12天】 在现代软件开发中,多线程编程是提升应用程序性能和响应能力的关键手段之一。特别是在Java语言中,由于其内置的跨平台线程支持,开发者可以轻松地创建和管理线程。然而,随之而来的并发问题也不容小觑。本文将探讨Java并发编程的核心概念,包括线程安全策略、锁机制以及性能优化技巧。通过实例分析与性能比较,我们旨在为读者提供一套既确保线程安全又兼顾性能的编程指导。
|
3天前
|
Java
Java一分钟:线程协作:wait(), notify(), notifyAll()
【5月更文挑战第11天】本文介绍了Java多线程编程中的`wait()`, `notify()`, `notifyAll()`方法,它们用于线程间通信和同步。这些方法在`synchronized`代码块中使用,控制线程执行和资源访问。文章讨论了常见问题,如死锁、未捕获异常、同步使用错误及通知错误,并提供了生产者-消费者模型的示例代码,强调理解并正确使用这些方法对实现线程协作的重要性。
13 3