JAVA总结 DAY14 0816 Vimcelia

本文深入讲解Java集合框架,包括Collection、List、Set、Map等核心接口及其实现类如ArrayList、LinkedList、HashSet、HashMap的特性与用法。探讨了数组与集合的区别,以及集合的遍历方法。

回顾:

1.Math类
2.System类:

System.in 输入流;System.out 输出流;System.err 打印

3.Date

时间对象

4.DateFormat

一个关于Date的抽象类

5.SimpleDateFormat :

把时间字符串转换为Date对象 parse()
把Date相应的格式转换为时间字符串 format()

Calendar

set( ) get( ) setTime( ) getTime( )

集合:

对象数组语法:

类名[ ] 对象名 = new 类名[5];

数组的缺点:

只要创建出来就固定其长度了, 所有扩展性差, 因此使用集合来解决这个问题

数组与集合的关系:

相同点:
1.数组与集合都是用来存数据, 都可以通过索引来获取数据;
2.数组与集合都是采用数组的方法来进行存的

不同点:
1.数组可以存基本数据类型,也可以存引用数据类型
2.集合只能够存引用数据类型
3.数组的长度是固定的,集合的长度是可变的

集合的框架:

单列: 每一个存的数据的都是独立的
在这里插入图片描述

双列: 以键值对存 key values

集合也是一个容器,用于存数据。
Collection:

1.Collection层次结构中的根接口,索引也是从0开始

常规的一些方法:
boolean add(E    e)   

添加,返回值是bealoon 添加成功返回true

boolean contains(Object o)  

判断是否有此元素 如果存在返回true 否则false

boolean isEmpty()  

判断集合里是否有元素

boolean remove(Object o)   

根据集合里的元素进行删除

int size()     

获取到集合的长度

Object[] toArray() 

把集合转换成数组

void clear()  

清空数组里的所有的元素

iterator() 

把集合转换成迭代器的方法

所有带All的方法:
addAll(Collection<? extends E> c)  

把小集合添加到大集合里, 例如: co.addAll©; 把集合 c的所有数据添加到co

boolean containsAll(Collection<?> c)  

如果此 collection 包含指定 collection 中的所有元素,则返回 true。

removeAll(Collection<?> c)   

返回值:如果存在交集返回是true , 返回的是没有较交集的数据

 retainAll(Collection<?> c)    

返回值判断是否发生该变,如果发生改变返回true,不发生改变返回false,取出来的是交集的结果

如何对集合来进行遍历:

1.for
2 .增强for 循环
3.使用迭代器来进行遍历

Iterator :

是一个接口,不能够被实例化

常规的方法:
hasNext()  

判断是否有下一个元素, 如果有返回true

remove()  

移除迭代器的某一个元素

遍历语法:

使用迭代器

			while 循环 (迭代器.hasNext()){
                  next()  // 获取其元素
                    }
  1. 把一个集合转换成迭代器
  2. 获取值的时候,不要通过next()方法来获取具体的值,一定要先获取对象, 通过对象来获取值

迭代器的内存图:
在这里插入图片描述

List:

导包 java.util List也是一个接口

特点:

1.有顺序
2.有索引
3.可以重复

List集合常规独有的一些方法:
public  void add(int index, E element)   

根据索引的位置来进行添加

E get(int index)  

根据索引来获取其值

E remove(int index)    

根据索引来进行删除

E set(int index, E element)  

也是替换 (前提这个已经存在)
总结: 这个方法都是根据索引来进行操作的

迭代器遍历报错:
java.util.ConcurrentModificationException  

对象的并发修改

ListIterator

这个迭代器是针对 list 集合而存在, 它的父类也是Iterator

ArrayList:

1.有顺序
2. 有索引
3.可以重复
4.以数组的方式来存数据 :
5.特点 :查询快 增加、 删除修改慢 (最常用的)
6.线程不安全

构造方法:跟StringBuffer 的有点类似.
ArrayList 常规的方法
  add() 

添加(默认也是向末尾添加数据)

 get(index)

根据索引来获取 ( 最常用的)

LinkedList:

1.是以链表式来进行存
2.特点: 增加 、 删除 、 修改快,效率高;查询速度慢

LinkedList也是 list 的 实现类 (不常用 )
两个构造 :

一般使用空的构造

常规的方法:
 public void addFirst(E e)    

插入数据到集合的头部

public void addLast(E e)     

插入到末尾

public E getFirst()  

拿到集合中 第一个元素

public E getLast()   

获取最后一个数据

public E removeLast()  

移除最后一个元素

public E removeLast()   

移除第一个元素

Vector:

线程安全的,但是已经被ArrayList替换,也是以数组的方式来进行存

构造方法与 ArrayList 是一样的
独有的方法 :
public void addElement(E obj)

向末尾来添加数据

public E elementAt(int index)    

根据索引来获取

public boolean removeElement(Object obj)   

删除集合里的对象

总结

今天学习了集合以及迭代器和关于集合里面内容的一些方法,总的来说方法不算太多,但是也要经常使用才能更好地运用

疑问

在什么情况下选择使用迭代器,在什么情况下选择增强for循环?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值