个人博客
专注IT梦想的地方

java常用对象API之集合框架

说到集合框架,其实刚开始学的时候有点自我感觉很简单,自己认为就是集合类中的框架之类的,但是当自己简单把它过了一变后发现懵里懵懂的,什么都没懂,于是自己又认认真真的看了一遍,才弄明白。

说到集合框架就不得不说集合类,集合类的由来是什么呢?简单的说就是对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,那么就是用集合容器进行存储。

集合类的特点:

  1. 用于存储对象的容器;
  2. 集合的长度是可变的;
  3. 集合中不可以存储基本数据类型值。

集合容器因为内部的数据结构不同,有多重具体容器,不断的向上抽取,就形成了集合框架。

框架的顶层就是Collection接口。

Collection的常见方法:

1.添加:
boolean add(Object obj);
boolean addAll(Collection coll);

2.删除:
boolean remove(Object obj);
boolean removeAll(Collection coll);//删除所有元素
void clear();//清空整个集合

3.判断:
boolean contains(Object obj);
boolean containsAll(Collection coll);
boolean isEmpty();//判断集合中是否有元素。

4.获取:
int size();
Iterator iterator();//专门用于取出集合中元素的方式(迭代器)

该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。所以该迭代器对象是在容器中进行内部实现的。对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,也就是iterator方法。

Iterator接口就是对所有的Collection容器进行元素取出的公共接口。

5.其他:
boolean retainAll(Collection coll);取交集。你手里有1.2.3 我手里有2.4.5,取交集就是2
Object[] toArray();//将集合转成数组

 

然后Collection下面有两个重要的接口

  1. List:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复的。
  2. Set:元素不能重复。

而我们常用的还是List这个接口

List:特有的常见方法:有一个共性特点就是都可以操作角标。
1.添加
void add(index,element);
void add(index,collection);

2.删除
Object remove(index);

3.修改
Object set(index,element);

4.获取
Object get(index);
int indexOf(object);
int lastIndexOf(object);
List subList(form,to);

 

list:集合是可以完成对元素的增删改查。

List:
|–Vector:内部是数组数据结构,是同步的。(几乎不用了…老版本的)增删,查询都很慢。
|–ArrayList:内部是数组数据结构,是不同步的。替代了Vector。查询的速度快。
|–LinkedList:内部是链表数据结构,是不同步的。 增删元素的速度很快。

 

LinkedList:

addFist();
addLast();
jdk1.6升级
offerFirst();
offerLast();

getFist();//获取但不移除,如果链表为空,抛出NoSuchElementException
getLast();
jdk1.6升级
peekFirst();//获取但不移除,如果链表为空,返回null
peekLast();

removeFirst();//获取并移除,如果链表为空,抛出NoSuchElementException
removeLast();
jdk1.6升级
pollFirst();//获取并移除,如果链表为空,返回null
pollLast();

 

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

Set接口中的方法和Collection一致。

|–HashSet:内部数据结构是哈希表 ,是不同步的。

如何保证该集合的元素唯一性呢?
是通过对象的hashCode和equals方法来完成对象唯一性的。
如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。
如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。
如果为true,视为相同元素,不存。如果为false,那么视为不同元素,就进行存储。

记住:如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法。
一般情况下,如果定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。
建立对象判断是否相同的依据。

 

|–TreeSet:可以对Set集合中的元素进行排序。是不同步的。

判断元素唯一性的方式:就是根据比较方法的返回结果是否是0,是0,就是相同元素,不存。

TreeSet对元素进行排序的方式一:
让元素自身具备比较功能,元就需要实现Comparable接口。覆盖compareTo方法。

如果不要按照对象中具备的自然顺序进行排序。如果对象中不具备自然顺序。怎么办?
可以使用TreeSet集合第二种排序方式二:
让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。
将该类对象作为参数传递给TreeSet集合的构造函数。

赞(1) 打赏
未经允许,不得转载本站任何文章:智言个人博客 » java常用对象API之集合框架

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏