黑马程序员----Java基础之集合类(一)

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ---------

集合

为什么会出现集合类

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

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

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

集合类的特点

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象

集合框架的构成及分类


集合添加元素用的是add()方法

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

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

迭代器

什么是迭代器呢?

其实就是集合的取出方式

Colletion:

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

set :元素是无序,元素不可以重复

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

1.增

add(index,elements);

addAll(index,Collection)

删:

remove(index)

set(index,elements)

get(index)

subList(from,to)

listIterator();

List集合特有的迭代器.ListIterator是Iterator的子接口

在迭代时,不可以通过集合对象的方法操作集合中元素,因为会发生yichagn,所以,在迭代时,只能用迭代器来操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如,添加.修改等,就需要使用其子接口,ListIterator,该接口只能通过list集合的ListIterator方法来完成

举例说明:


List集合中的常用子集

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

LinkedList:底层使用的数据结构是链表数据结构.特点,增删速度很快,查询稍慢

Vector:底层是数组数据结构.线程同步,被ArrayList替代啦!

Vector示例:

Vector的元素取出方式为枚举,是Vector特有的取出方式


LinkedList的特有方法

addFirst()      addLast()

添加元素

getFirst()     getLast()

获取元素,但不删除元素,如果集合中没有元素,会出现NoSuchElementException

removeFirst()      removeLast()

获取元素,但元素被删除,如果集合中没有元素,会出现NoSuchElementException

在JDK1.6出现了替代方法

offerFirst()        offerLast()

添加元素

peekFirst()      peekLast()

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

pollFirst()     pollLast()

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

练习:使用LinkedList模拟一个堆栈或者队列的数据结构

堆栈:先进后出     队列;先进先出


练习,起初ArrayList中的重复元素


set集合:功能基本和Collection一致

往hashSet集合中存入自定对象

姓名和年龄相同为同一个人,重复元素



HashSet集合:底层数据结构是哈希表

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

是通过元素的两个方法:hashCode和equals来完成的.如果元素的HashCode值相同,才会判断equals是否为true如果元素的hashCode值不同,则不会调用equals方法

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

TreeSet:可以对Set集合中的元素进行排序

练习;对传入的学生对象的年龄进行排序



TreeSet:可以对Set集合中的元素进行排序.底层数据是二叉树结构.保证元素唯一性的依据(compareTo方法 return 0)

TreeSet排序的第一种方式:让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法.另一种方式也称为元素的自然排序,或者叫默认顺序

TreeSet的第二种排序方式

当元素自身不具备比较性时,或者具备的比较性不是所需的,这时就需要让集合自身具备比较性>在集合初始化时,就有了比较性

练习:按照字符串长度排序


猜你喜欢

转载自blog.csdn.net/Crazysort/article/details/46532647