A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zuopiezi 中级黑马   /  2015-6-23 14:46  /  758 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

集合的由来:
   对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定。
   就使用集合容器进行存储。
集合的特点:
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 :特有的常见方法:有一个共性特点就是可以操作角标。

8 个回复

倒序浏览
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集合是可以完成对元素的增删改查的。。
回复 使用道具 举报
List;
  |--Vector :内部是数组数据结构,是同步的。增删,查询都很慢。
  |--ArrrayList :内部是数组数据结构,是不同步的,替代了Vector。查询的速度快。
  |--LinkedList : 内部是链表数据结构。是不同步的。增删元素的速度很快。

LinkedList:


      addFrist();
      addLast();
      offerFrist();
      offerList();

    getFrist();
    getLast();
    peekFrist();
    peekLast();


回复 使用道具 举报
学习学习
回复 使用道具 举报
学习了:handshake
回复 使用道具 举报
Set元素不可以重复,是无序的。
  Set接口中的方法和Collection一致。
   |--HashSet:内部数据结构是哈希表,是不同步的。
  如何保证该集合的元素唯一性呢?
是通过对象的hashCode和equals方法来完成对象唯一性的。
如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。
如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。
如果为ture ,视为相同元素。 不存。如果为false ,那么视为不同元素,就进行存储。
记住: 如果元素套存储到HashSet集合中,必须覆盖hashCode方法和equals方法。
  一般情况下,如果定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。
建立对象判断是否相同的数据。
回复 使用道具 举报
  |--TreeSet:可以对Set集合中的元素进行排序,是不同步的。
      判断元素唯一性的方式:就是根据比较方法的返回结果是否为0,是0,就是相同元素,不存。
   
     TreeSet对元素进行排序的方法之一:
     让元素自身具备比较功能,元素就需要实现Comparable接口,覆盖CopareTo方法。
   

    如果不按照对象中具备的自然排序进行排序。
   如果对象中不具备自然排序。怎么办?
   可以使用TreeSet集合第二种排序方式二:
   让集合滋生具备比较功能,定义一个类Comparable接口,覆盖compareTo方法,
   将该类对象作为参数传递给TreeSet集合的构造函数、
回复 使用道具 举报
if(this.hashCode() == obj.hashCode() && this.equals(obj))

哈希表确定元素是否相同

1、判断的是两个元素的哈希值是否相同,。
    如果相同,在判断两个对象的内容是否相同。

2、判断哈希值相同,其实判断的是对象的hashCode的方法,判断内容相同,用的是equals方法。

注意:如果哈希值不同,是不需要判断equals的。。。
回复 使用道具 举报
银哥 中级黑马 2015-6-23 15:23:38
9#
学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马