JavaDay14学习总结

一、笔记

1.集合
对象数组:
语法:类名[] 对象名=new 类名[5];
缺点:扩展性差,数组本身的长度是固定的,一旦创建就无法修改
对象数组内存分析:
在这里插入图片描述
数组与集合的关系:

相同点:
1.数组与集合都是用来存数据,  都可以通过索引来获取数据
2.数组与集合都是采用数组的方法来进行存的
不同点:
1.数组可以存基本数据类型,也可以存引用数据类型,而集合只能够存引用数据类型
2.数组的长度是固定的,集合的长度是可变的

集合的分类:
单列集合:每个元素都是一个单独的个体
双列集合:每个操作都是针对一对数据来进行的,一对数据作为一个单位(以键值对存key、values)
集合的框架:
单列集合的:

Collection(根接口)
 			List(有序的子接口,有序,有索引,可以重复)
 					 ArrayList(插入慢,查询快)
 					 LinedList(查询慢,插入快)
 					 Vector  线程安全
 			Set(无序的子接口,不可以用普通的for循环俩遍历)
 					HashSet(以哈希来进行存)
 					TreeSet( 以二叉数)

集合:集合也是一个容器,用于存数据。
Collection:
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  的方法:
1. addAll(Collection<? extends E> c)  把小集合添加到大集合里, 例如:  co.addAll(c); 把集合 c的所有数据添加到co
2. boolean containsAll(Collection<?> c)  如果此 collection 包含指定 collection 中的所有元素,则返回 true。
3. removeAll(Collection<?> c)   返回值:如果存在交集返回 是true , 返回的是没有较交集的数据 
4. retainAll(Collection<?> c)    返回值 判断是否发生该变,如果发生该变返回true,不发生该变返回false    取出来的是交集的结果

如何对集合来进行遍历:

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

Iterator : 是一个接口,不能够被实例化
常规的方法:

hasNext()  判断是否有下一个元素, 如果有返回true
Next()获取到下一个元素
remove()  移除迭代器的某一个元素

遍历语法:使用迭代器

while 循环 (迭代器.hasNext()){
                      next()  // 获取其元素
  }

增强for 循环的底层也是使用迭代器来实现,也是通过指针
List: 导包 java.util是一个接口

特点: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.可以重复    5.线程不安全

以数组的方式来存数据 :特点 :查询快 增加 删除修改慢 (最常用的)
ArrayList 常规的方法

add() 添加(默认也是向末尾添加数据)   
get(index)   获取,根据索引来获取  ( 最常用的) 

LinkedList:
是以链表式来进行存
在这里插入图片描述

特点: 增加  删除  修改    速度快,效率高    查询速度慢

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)    删除集合里的对象
Element 都是根据节点来进行操作

二、总结

第十四天的学习,今天一天都在学习集合,主要学习了集合的有序的子接口,用起来确实比数组好用,但数组也有自身的用武之地,可能集合还没掌握的很好,用起来不是很习惯,做题是会很习惯的往数组方考虑。加油干!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值