黑马程序员技术交流社区
标题:
集合(List 、Set)部分总结
[打印本页]
作者:
zuopiezi
时间:
2015-6-23 14:46
标题:
集合(List 、Set)部分总结
集合的由来:
对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定。
就使用集合容器进行存储。
集合的特点:
1、用于存储对象的容器。
2、集合的长度是可变的。
3、集合不可以存储基本数据类型值。
集合容器因为内部的数据结构不同,有多种具体容器。
不断的向上抽取,就形成了集合框架。
框架的顶层Collection接口。
Collection的常见方法:
1、添加:
boolean add(Object obj);
boolean addAll( Collection coll);
2、删除:
boolean remove(Object obj);
boolean removeAll(Collection coll);
3、判断:
boolean contains(Object obj);
boolean containsAll(Collection coll);
boolean isEmpty():判断集合中是否有元素。
4、获取
int isze():
Iterator iterator( ):取出元素的方法:迭代器
该对象必须依赖于具体容器,因为每一个容器的数据结构都不同。
所以该迭代器对象是在容器中进行内部实现的。
对于使用容器而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可。
也就是itertor方法。
Iterator接口就是对所有的Collection容器进行元素取出的公共接口。
其实就是抓娃娃游戏机中的夹子。
5、其他
boolean retainAll(Collection coll);取交集。
Object[] toArray():将集合转换数组。
Collection
|--List :有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。
|--Set :元素不可以重复,无序。
List :特有的常见方法:有一个共性特点就是可以操作角标。
作者:
zuopiezi
时间:
2015-6-23 14:49
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(from,to);
list集合是可以完成对元素的增删改查的。。
作者:
zuopiezi
时间:
2015-6-23 14:55
List;
|--Vector :内部是数组数据结构,是同步的。增删,查询都很慢。
|--ArrrayList :内部是数组数据结构,是不同步的,替代了Vector。查询的速度快。
|--LinkedList : 内部是链表数据结构。是不同步的。增删元素的速度很快。
LinkedList:
addFrist();
addLast();
offerFrist();
offerList();
getFrist();
getLast();
peekFrist();
peekLast();
作者:
Happe_Sun
时间:
2015-6-23 14:56
学习学习
作者:
SimpleT
时间:
2015-6-23 14:57
学习了:handshake
作者:
zuopiezi
时间:
2015-6-23 15:02
Set元素不可以重复,是无序的。
Set接口中的方法和Collection一致。
|--HashSet:内部数据结构是哈希表,是不同步的。
如何保证该集合的元素唯一性呢?
是通过对象的hashCode和equals方法来完成对象唯一性的。
如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。
如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。
如果为ture ,视为相同元素。 不存。如果为false ,那么视为不同元素,就进行存储。
记住: 如果元素套存储到HashSet集合中,必须覆盖hashCode方法和equals方法。
一般情况下,如果定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。
建立对象判断是否相同的数据。
作者:
zuopiezi
时间:
2015-6-23 15:07
|--TreeSet:可以对Set集合中的元素进行排序,是不同步的。
判断元素唯一性的方式:就是根据比较方法的返回结果是否为0,是0,就是相同元素,不存。
TreeSet对元素进行排序的方法之一:
让元素自身具备比较功能,元素就需要实现Comparable接口,覆盖CopareTo方法。
如果不按照对象中具备的自然排序进行排序。
如果对象中不具备自然排序。怎么办?
可以使用TreeSet集合第二种排序方式二:
让集合滋生具备比较功能,定义一个类Comparable接口,覆盖compareTo方法,
将该类对象作为参数传递给TreeSet集合的构造函数、
作者:
zuopiezi
时间:
2015-6-23 15:11
if(this.hashCode() == obj.hashCode() && this.equals(obj))
哈希表确定元素是否相同
1、判断的是两个元素的哈希值是否相同,。
如果相同,在判断两个对象的内容是否相同。
2、判断哈希值相同,其实判断的是对象的hashCode的方法,判断内容相同,用的是equals方法。
注意:如果哈希值不同,是不需要判断equals的。。。
作者:
银哥
时间:
2015-6-23 15:23
学习一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2