黑马程序员_集合框架

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

集合

为什么出现集合类?

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

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

数组虽然也可以存储对象,但长度是固定的:集合长度是可变的,数组中可以存储基本数据类型,集合只能存储对象


Collection

       |--List:元素时有序的,所以元素可以重复,

       |--ArrayList:底层使用数据结构是数组结构。JDK1.2使用----线程不同步。默认长度10以50%增长

              |--LinkedList:底层使用数据结构是链表结构。

              |--Vector:底层使用数据结构是数组结构。JDK1.0使用----线程同步。被ArrayList代替。默认长度10以100%增长。(基本不使用Vector了)

       |--Set:元素是无序的,所以元素不能重复

              |--HashSet:底层使用数据结构是哈希表。线程非同步

                                   保证元素唯一性的原理:判断hashCode和equals方法

              |--TreeSet:存储无序,但是可以堆积和元素按照自然顺序排序

                            底层使用数据结构是二叉树

       Collection共性方法

1     增

boolean add()

boolean addAll()

1        删

boolean remove

boolean removeAll()

void clear()

2        改

3        查

booleancontains()

booleancontainsAll()

booleanisEmpty()

Iteratoriterator()

booleanretainAll()

int size()

      

       booleanequals()

       inthashCode()

 

迭代器-----Iterator(接口)----要指明是哪个的Iterator

Iterator方法

hasNext()

next()

remove()

 

List特有共性方法

1 增

add(intindex, E element) :在指定位置插入元素

addAll(intindex, Collection<? extends E> c) : 在指定位置插入集合

2 删

       remove(intindex)

3 改

       set(intindex, E element)

4 查

       get(intindex) :获取指定位置的元素

       indexOf(Objecto) :返回第一次出现指定元素索引

       lastIndexOf(Objecto) :返回最后出现的指定元素索引

       listIterator()

       listIterator(intindex)

       subList(intfromIndex, int toIndex)

使用迭代器获取时,又使用迭代器以外的集合方法(如添加设置等功能)时会出现异常ConcurrentModificationException并发修改异常

此时List给出了一个特有的迭代器ListIterator

其提供了除Iterator之外的方法

add()

hasPrevious():逆向获取

nextIndex():返回next后续索引

previous():返回前一个元素

previousIndex():返回previous后续索引

set()

 

Vector特有方法特点都含有单词element

vector特有枚举方法获取,后已被iterator方法替代

 

LikedList

特有方法

addFirst()

addLast()

getFirst()

getLast()

removeFirst()

removeLast()

JDK1.6 出现替代方法

add()

       offer()

       offerFirst()

       offerFirst()

get()

       peek()

       peekFirst()

       peekLast()

remove()

poll()

pollFirst()

pollLast()

pop()

push()

 

Set集合的方法与Collection集合方法一致

HashSet

       存储自定义对象时如何保证存储元素唯一性?

       复写hashCode和equals

       如果元素的hashCode值相同,才会判断equals是否为true

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

       注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法

TreeSet

       因为TreeSet多集合元素会进行排序,当该集合元素不具备比较性时,会报异常ClassCastException

       此时,应该指定该元素的比较方法

① TreeSet集合第一种排序方式:

       继承Comparable接口,实现其compareTo()方法

记住,排序时,如果主要条件相同时,要比较次要条件

② TreeSet集合第二种排序方式:

       当元素自身不具备比较性时,或者具备的比较性不是所需要的,这是就需要让集合自身具备比较性

       即在构造TreeSet时传入一个比较器comparator

       创建比较器继承Comparator接口,实现compare方法

当两种排序都存在时,以比较器为主。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值