黑马程序员 Java基础学习笔记 集合类

来源:互联网 发布:翻墙后有什么福利软件 编辑:程序博客网 时间:2024/05/17 21:52

--------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ------------------------------------------ 

集合类的特点

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

Collection

            ----List

                  -----ArrayList

                ------LinkList

                 -----Vector

        ------Set

             ------HashSet

             ------TreeSet

集合框架

为什么会出现那么多的容器呢?

因为每一个容器对数据的存储方式都不同,这个存储方式称为:数据结构

1  add方法的参数类型是Object,便于接收任意类型对象  2集合中的存储都是对象的引用(地址)

迭代器 Iterator              Iterator it=al.iterator( );

                                         while(it.hasNext())

                                          {

                                                    System.out.println(it.next());

                                            }

迭代器是什么呢?  其实就是集合获取元素的方法

就把取出的方式定义在集合的内部,这样取出方式就可以直接访问集合元素的内容。那么取出方式就被定义成啦内部类。而每一个容器的数据

结构不同。所以取出的动作细节也不一样,但是都有共性内容判断和取出,那么可以将共性抽取。那么这些内部类都符合这一规则,该规则

是Iterator.

List 集合的共性方法

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

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

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

增 add(index, element);  addAll(index,  Collection);

删 remove(index);

改 set(index,  element)

查 get(index);    subList(from, to);  listIterator( );

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

LinkList   底层适应的是链表数据结构,特点,增删速度快,查询稍慢。

Vector  底层是数据结构

LinkList 特有方法

addFirst( );addLast( );       getFirst();getLast(); 获取不删除    removeFirst();removeLast();获取且删除  如果没有元素返回 null

在JDK1.6出现啦替代方法

offerFirst();offerLast();     peekFirst();peekLast();               pollFirst(); pollLast( );

List集合判断元素是否相等,依据的是元素的equals方法。

HashSet

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

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

不会调用equals.

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

TreeSet排序的第一种方式:让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法。这种方式也称作元素自然排序,

或者叫做默认排序。

TreeSet的第二种排序方式

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

在集合初始化时,就有了比较方式。定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。

定义一个类,实现Comparator接口,覆盖compare 方法。

--------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ------------------------------------------ 
















0 0