集合(超详细)持续更新

前言

今天开始我们进入java集合内容的学习,理解数据容器对于数据处理的作用.

 

集合的好处

可以动态保存任量对象,使用比较方便

提供了一系列方便的操作对象的方法,add,remove,let, get等

使用集合添加,删除新元素的代码一简结

 

集合种类

 

java中的集合种类很多,主要分为两大类

单列集合:

 

双列集合: 

 

 

⭐️1.集合主要是两组(单列集合,双列集合) 

    2.Collection接口中有两个重要的子接口            List,Set,它们的实现子类都是单列集合

   单列集合指的是集合中放的是单个元素.

   双列集合就是在放的时候键值对一起放.

 

那么接下来就来学习集合类🥰🥰🥰

i.Collection接口

(a)接口定义:

(1)Collection实现子类可以存放多个元素,每个元素可以是Object

(2)有些Collection的实现类,可以存放重复的元素,有些不可以

(3)有些collection的实现类,有些是有序的(List),有是不是有序的(Set)

(4)Collection接口没有直接的实现子类,是通过它用子接口List和Set来实现的

 

(b)常用方法:

<!!!>我将方法名放入word中可能会有红线 

下面给大家演示一下如何使用

特别提及: 

⭐️tips:<>中的内容是指定泛型,后面会详细讲,大家只需要关心它的参数类型即可.

 

(c)Collection接口遍历元素方式

 

1.使用Iterator(迭代器)

(1) Iterator 对象称为迭代器,主要用于遍历Collection集合中的元素

(2)所有实现了Collection接口的集合类都有一个iterator()方法一个实现了Iterator接口的对象,即可以返回一个迭代器

(4)Iterator仅用于遍历集合,Iterater本身并不存放对象.

⭐️tips:本质是使用内部类来进行数据的遍历,内部类用private修饰

 

Iterator接口方法

 

  

⭐️tips:

1.在调用iterator.next()方法之前必须要调用iterater. hasNext()进行检测.若不调用,且下一条记录无效,直接调用iterator.next(),会抛出NoSuchElementException异常

2.当退出while循环,这时iterator迭代器,指向最后的元素。
iterater.next();  
3.如果希望再次遍历,需要重置我们的迭代器.
重新new一个生成器

 

2.使用增强for循环 

 

tips:

1.使用增强for,遍历Collection集合

底层自动调用代装的hasNext() 和next()

2.增强for,底层仍然是迭代器.

3.增强for可以理解成简化版本的迭代器.

 

ii.List接口


(1)List接口基本介绍.


List接口是Collection接口的子接口
(1)List集合类中元素有序(即添加顺序和取出顺序一致),且可重复.

(2)List集合中的每个元素都有其对应的顺序学习,即支持索引

(3)List自容器中的旨.元素都对应一个整数型的序号记载其在容器中的位置,可以根据序资号存取容器中的元素.
(4)JDK API中List接口的实现类有

超级接口:Collection<E>,Iterable<E>.


Abstractlist, AbstractsequentialList,

ArrayList, AttributeList 

CopyOnWriteArrayList,LinkedList,RoleList,

RoleUnresolvedList,Stack,Vector


常用的有:ArrayList,LinkedList和Vector   

 

(2)List接口的常用方法 

 

List集合里添加了一些根据索引来操作集合元素的方法.

 

 

(2)List的三种遍历方式

[ArrayList,LinkedList,Vector]

 

 

说明:使用LinkedList完成使用方式和ArrayList一样

 

iii.ArrayList类

注意事项:

(1) permits ,all elements, including null. ArrayList 可以加入null,并且多个
(2)ArrayList是用数组来实现数据存储(3)ArrayList基本等同Vecter,除了Arylist是线程不安全(执行效率高),在多线程情况下,不建议使用.
Arraylist是线程不安全的,没有synchronized

 

 ArrayList的存层操作机制源码分析

(1)ArrayList中维护了一个Object类型的数组elementData

 

⭐️如果有一个属性或成员,它被transient修饰了,那就代表这个对象在进行序列化时,这个属性不被序列化

 

(2)当创建ArrayList对象时,如果使用的是无参构造器,则初始elementData容量为0,第1次添加,则扩容elementData为10,如需要再次扩容.则扩荣elementData为1.5倍.

 

 

 

 

 

 

(3)如果使用的是指定大小的构造器,则初始elementData容量为指定大小,如果需要扩容,则直接扩容elementData为1.5倍.

 

tips:下面的构造方法与上面的不同点在于传入了一个初始容量,其余扩容的实现都是相同的原理

 

iv.Vector类

 

(1)Vector类的定义说明

(2)Vector底层也是一个对象数组

 

(3)Vector是线程同步的,即线程安全,Vector类的操作方法带有synchronized

 

(4)在开发中,需要线程同步安全时,考虑使用Vector.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值