黑马程序员-java集合 学习笔记

来源:互联网 发布:网络扫黄打非工作个人 编辑:程序博客网 时间:2024/05/21 10:59

  ------- android培训、java培训、期待与您交流! ----------

一、集合类

l  为什么出现集合类?

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

l 数组和集合类同时容器,有何不同

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

l 集合类的特点

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

二、集合框架的构成及分类

Java中集合类的关系图

为什么会出现这么多容器呢?因为每一个容器对数据的存储方式都有不同,这个存储方式称之为:数据结构

三、针对集合框架的分类进行一一介绍:

l Collection

 1.  List:元素时有序的,元素时可以重复的,因为该集合体系中有索引

     

     List:特有方法,凡是可以操作交表的方法都是该体系特有的方法

     增

     Add(index,element);

     addAll(index,Collection)

     删

     remove(index)

     改

     Set(index,elementt);

     查

     Get(index);

     subList(from,to);

     ListIterator();

     Int indexOf(obj);获取指定元素的位置

   

     迭代器就是集合的取出元素的方式

     对于迭代器Iterator需要注意的是:在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生ConcurrentModificationException异常,所以在迭代器时只能用呆呆器的方法操作元素,可是Iterator方法使有限的,只能对元素进行判断,取出删除的操作,如果想要其他操作如天剑,修改等,就需要使用其子接口ListIterator

该接口只能通过List集合的ListIterator方法获取 

(1)ArrayList底层的数据结构使用的是数组结构,特点:查询速度很快,但是增删稍慢

     ArraList中比较重要的方法

     Boolean add(E e);

     Boolean  contain(Objec o)

     int indexOf(Object o) 返回此列表中首次出现指定元素的索引 如果不存在则返回-1

     Object[] toArray()    按适当顺序(从第一个到最后一个元素)返回包含此列表中所有

                       元素的数组 

     <T> T[] toArray(T[] a) 按适当顺序(从第一个到最后一个元素)返回包含此列表中所

                        有元素的数组;返回数组的运行时类型是指定数组的运行时类、

                        型。 

(2)LinkedList :特有方法

     addFirst();

     addLast();

     getFirst();

     getLast();

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

     removeFist();

     removeLast();

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

JDK1.6中出现了替代方法

offerFirst();

offerLast();

peekFirst();

peekLast();

与上面对应

pollFirst();

pollLast();

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

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

 (1HashSet:数据结构是哈希表,线程非同步,保证元素唯一性的原理判断元素hashCode

       值是否相同,如果相同还会继续判断元素equals方法,是否为true

     如图HashSet中的元素无序

 如图:如果用户想将自己的类加入HashSet集合  可以在自己的类中重写HashCode()equals()函数

 

  (2TreeSet可以对Set集合中的元素进行排序,底层数据结构是二叉树,

       保证元素唯一性的依据compareTo方法return0

       

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

      

      

     如图TreeSet存储数据结构  而且数据怎么存就怎么取   默认顺序是从小到大依次取出来

     TreeSet的第二种排序方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的,在集合初始化是,就有了比较方式。

集合TreeSet的一种构造方法如下:

TreeSet(Comparator<? super E> comparator)  构造一个新的空 TreeSet,它根据指定比较器进行排序

例如 让整型Integer具有比较性   传一个Mycompare比较器

 

l Map  public interface Map<K,V>将键映射到值的对象。一个映射不能包含重复的键;每 

          个键最多只能映射到一个值。

Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。其实Set集合底层使用了Map集合

1.HashTalbe:底层是哈希表数据结构 ,不可以存入nullnull值 同步  jdk1.0效率低

2.HashMap:底层是哈希表数据结构,允许使用null键和null值,不同步,将Hashtalbe

          替代  jdk1.2效率高

遍历HashMap的两种方法

(1)Map中的方法 Set<K> keySet()       返回此映射中包含的键的 Set 视图。 

 

(2) Set<Map.Entry<K,V>> entrySet()   返回此映射中包含的映射关系的 Set 视图。 

        

3.TreeMap:底层是二叉树数据结构,线程不同步,可以用于给map集合中的键进行排序

 

原创粉丝点击