JAVASE之泛型,集合

Java集合

 

集合体系概述(单列集合,双列集合是map):

 

顶层的父接口Collection中一定定义了所有子类集合的共同属性和方法.

 

Collection中常用方法

Boolean add(Object e) 向集合中添加元素

Void clear() 清空集合中所有元素.

Boolean contains(Object o):判断集合中是否包含某个元素

Boolean isEmpty()判断集合中的元素是否为空

Boolean remove(Object o):根据元素的内容来删除某个元素.

Int size()获取集合的长度

Object[] toArray():能够将集合转换成数组并把集合中的元素存储到数组中.

 

迭代器:

Java中提供了很多个集合,在存储元素时,采用的存储方式不同.我们要取出这些集合中的元素,可通过一种通用的获取方式来完成.

Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把元素取出,继续在判断,如果还有就再取出来.一直把集合中的所有元素全部取出.这种取出方式专业术语称为迭代.

集合中把这种取元素的方式描述在Iterator接口中.Iterator接口的常用方法有:

hasNext();方法:判断集合中是否有元素可以迭代

E Next()方法;用来返回迭代的下一个元素,并把指针向后移一位.

 

常见异常之并发修改异常:

Exception in thread “main” java.util.ConcurrentModificationException:并发修改异常.

迭代器是依赖于集合的,相当于集合的一个副本,当迭代器在操作的时候,如果发现和集合不一样,则抛出并发修改异常.

解决方案:

在使用迭代器进行遍历的时候使用迭代器来进行修改.

不使用迭代器遍历集合,可以在遍历的时候使用集合的方法进行增加或删除.

使用迭代器遍历,就需要使用Iterator的子接口ListIterator来实现向集合中添加

 

 

泛型:

在集合中是可以存放任意对象的,只要把对象存储集合后,这时他们都会被提升为Object类型.当我们取出每一个对象.并且进行相应的操作,这时必须采用类型转换.

由于集合可以存储任意类型的对象,当我们存储了不同类型的对象,就有可能在转换的时候出现类型转换异常,所以引出泛型

泛型:是一种广泛的类型,把明确数据类型的工作提前到了编译时期,借鉴了数组的特点

好处:

避免了类型转换的问题;可以减少黄色警告线;可以简化我们代码的书写.

 

 

增强for循环(foreach)

增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的.内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作.

格式:

for(元素的数据类型 变量 : Collection集合or数组)

增强for是用于遍历Collection和数组.通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作

 

常见的数据结构:

数组,链表,栈和队列;

数组:

数组的长度一旦定义则不可改变

数组中的元素都有整数索引

数组只能存储同一类型的元素

数组可以存储基本数据类型,也可以存储引用数据类型.

 

查找元素快:通过索引,可以快速访问指定位置的元素

增删元素慢:每次添加元素需要移动大量元素或者创建新的数组.

 

链表:

多个节点之间,通过地址进行连接.

查找元素慢:想查找某个元素,需要通过连接的节点,一次向后查找指定元素.

增删元素快:只需要修改连接下个元素的地址即可.

堆栈:

先进后出(,存进去的元素,要在后他后面的元素一次取出后,才能取出该元素)(示例:子弹弹弹夹)

 

队列:

先进先出(,存进去的元素,要在后他前面的元素一次取出后,才能取出该元素)(实例:安检检查)

 

List集合

特点:

有序(读取顺序是一致的);有整数索引;允许重复;

特有方法:

Void add(int index,E element):将元素添加到index索引位置上.

E get(int index) 根据index索引获取元素.

E remove(int index) 根据index索引删除元素

E set(int index,E element) index索引位置的元素设置为element.

 

List的常用子类:(ArrayListLinkedList)

ArrayList:底层是数组结构,查询块,增删慢

LinkedList:底层是链表结构,查询慢,增删快.

链表LinkedList常用方法:

Void addFirst(E e):向链表的头部添加元素

Void addLast(E e):向链表的尾部添加元素

E getFirst();获取链头的元素,不删除元素

E getLast();获取链尾的元素,不删除元素

E removeFirst();返回链头的元素并删除链头的元素

E removeLast();返回链尾的元素并删除链尾的元素.

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值