黑马程序员_java编程基础15 集合框架

------- android培训java培训、期待与您交流! ----------

1、集合类。

为什么出现集合类?

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行储存,集合就是储存对象最常用的一种方式。

数组和集合类同时容器,有何不同?

数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。

数组中可以存储基本数据类型,集合只能存储对象。

集合类的特点。

集合只用于存储对象,集合场地是可变的,集合可以存储不同类型的对象。

add方法的参数类型是Object,以便于接受任意类型对象。

集合中存储的都是对象的引用(地址)

2、all.retainAllal2;al1al2 的交集存入al1中。al1只会保留和al2相同的元素。

3、Iterator迭代器。

hasNext() 如果仍有元素可迭代,返回true

next()  返回迭代的下一个元素

什么是迭代器呢?其实就是集合的取出元素的方式。

4、Collection

|--List:元素是有序的,元素可以重复,因为该集合体系有索引。

|--ArrayList:底层的数组结构使用的是数组结构。特点:查询速度快。但是增删稍慢,线程不同步。

判断元素相同或存储元素是依赖equals

|--LinkedList:底层使用的是链表数组结构。特点:增删速度快,查询速度慢。

|--Vector:底层是数组数据结构。线程同步。查询增删都慢。被ArrayList替代了。

|--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。

|--HashSet:底层数据结构是哈希表。

|--TreeSet

List

特有方法:凡是可以操作角标的方法都是该体系的特有方法。

add(index,element);

addAll(index,Collection);

remove(index);

set(index,element);

get(index);

subList(from,to);

listIterator();

List集合特有的迭代器,ListIteratorIterator的子接口。

在迭代时,不可以通过几何对象的方法操作集合中的元素,会发生

ConcurrentModificationException(并发操作异常)异常。

所以,在迭代器时,只能运用迭代器的方法操作元素,可是Iterator的方法是有限的,只能对元素进行判断,取出,删除的操作。如果想要其他的操作,如添加修改等,就需要使用其子接口,ListItetator。该接口只能通过List集合的Iterator方法获取。

hasPrevious()反向遍历,如果有多个元素,则返回true

5、vector中的枚举。

枚举就是Vector特有的取出方式。发现枚举和迭代器很像。

6、LinkedList:特有方法

addFirst();

addLast();

getFirst();

getLast();获取元素,但不删除元素。

removeFirst();

removeLast();获取元素,但是元素被删除。

如果集合中没有元素,或出现NoSuchElementException

JDK1.6出现了替代方法。

offerFirst();

offerLast();

添加元素

peekFirst();

peekLast();

获取元素,但不删除元素,如果集合中没有元素,则返回null

pollFirst();

pollLast();

获取元素,但是删除元素,如果集合中没有元素,则返回null

7、List集合判断元素是否相同,依据是元素的equals方法。

8、【开发建议】

如果取到的元素很多,涉及到频繁的增删操作的时候,用LinkedList

涉及到增删操作但是不频繁,用ArrayList或者LinkedList

涉及到增删也涉及到查询,建议使用ArrayList

9|--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。

|--HashSet:底层数据结构是哈希表。

HashSet是如何保证元素的唯一性呢?

是通过元素的两个方法,hashCodeequals来完成,如果元素的HashCode值相同,才会判断equals是否为true

如果元素的hashCode值不同,不会调用equals

【注意】对于判断元素是否存在,以及删除等操作,以来的方法时元素的hashCodeequals方法。

|--TreeSet

Set存入和取出是按照哈希表存取的。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值