码迷,mamicode.com
首页 > 其他好文 > 详细

常用集合类

时间:2015-07-27 22:32:29      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

 技术分享
 
 
Collection的普通方法:
          1:boolean remove(Object o)  删除对象    
          2:void clear() 清空集合
          3:boolean contains(Object o)  判断集合中是否有指定的元素对象
          4:boolean isEmpty()  判断集合是否为空
          5:int size() 返回此 collectio
 *        1:boolean remove(Object o)  删除对象
          2:boolean contains(Object o)  判断集合中是否有指定的元素对象
           1:boolean addAll(Collection c) 将指定 collection 中的所有元素都添加到此 collection 中
          2:boolean removeAll(Collection c) 移除此 collection 中那些也包含在指定 collection 中的所有元素

          3:boolean containsAll(Collection c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。

            boolean retainAll(Collection c) 仅保留此 collection 中那些也包含在指定 collection 的元素,求交集,将结果返回给调用方法的集合
             返回值:不是表示是否有交集。   而表示如果在取交集之后,调用方法的集合值改变了,就返回true,没改变就返回false


        ArrayList当中判断元素是否唯一,使用的元素对象的equals方法。n 中的元素数  
 
Collection的返回迭代器方法:
  Iterator iterator()   返回在此 collection 的元素上进行迭代的迭代器。返回遍历工具——迭代器
  
  迭代器:
          Iterator:对 collection 进行迭代的迭代器。使用用来遍历集合的工具。调用该对象的方法即可遍历对应的集合。
          我们的迭代器不是new出来的!!!必须是根据某个集合调用iterator()方法返回的。
  
  迭代器方法:
          boolean hasNext()  判断是否有下一个元素。              发现元素
          Xxx next() 返回迭代的下一个元素。  获取下一个元素。    获取元素
  
          如果迭代到结尾,仍往后迭代,则会报错NoSuchElementException  
 
   
  这里使用  同时演示List的过程就是ArrayList的常规使用过程。
  
  List的特有方法:
          因为List是有序的集合,可以将元素按照加入的顺序编号。所以这些编号就可以看做是索引。从而通过索引操作集合。
  
          1:void add(int index,Xxx element)  在指定索引位置添加指定元素。
          2:Xxx remove(int index)  删除指定索引位置的元素    返回的是被删除的元素
          3:Xxx get(int index)  获取指定位置的元素
          4:Xxx set(int index, E element)  将指定位置的元素修改为新的对象  返回值:被修改的元素对象
          5:int indexOf(Object o) 通过对象找到该对象在这个集合中的索引,如果没有找到返回-1  
          
 
         void add(E e)  这个添加元素的方法是迭代器的方法!!!  在使用该方法向集合中加入元素时,不会迭代新加进来的元素!  
         boolean hasPrevious()  判断是否有上一个元素
         E previous() 返回上一个元素
         void set(E e)  修改元素  
 
  List的子类,增删快,查找慢,提供了操作首尾元素的方法。
  
  特有方法:
   1:public void addFirst(E e)  在集合头部添加元素
   2:public void addLast(E e)   在集合尾部添加元素
   3:public E getFirst()   获取头部元素 
   4:public E getLast()    获取尾部元素
 
 Vector: 安全的,老的,速度慢的List
  
  public void addElement(E obj)  添加元素
  public Enumeration elements()  返回该集合的枚举   
  Enumeration:枚举   这里先认为枚举相当于迭代器      实际上枚举是存放元素的容器
  boolean hasMoreElements()  相当于迭代器的hasNext方法  即  判断是否有下一个元素
  E nextElement()  相当于迭代器的next方法  即  获取下一个元素
 
 
 
 
 
 
 
 
 
HashSet: Set的子类  哈希表结构  不可重复 无序的   允许null值
 hash表结构判断元素是否唯一的顺序:
   1:判断hashCode值
   2:
  如果hashCode值不同,直接判断两个元素不同,加入新元素
  如果hashCode值相同,继续判断equals方法的返回值。
   如果equals方法返回true,则两元素相同,不加入新元素
   如果equals方法返回false,则两元素不同,加入新元素
  
  重写hashCode方法规则:
   重写hashCode方法就是为了获取其hashCode值
  该值是由各个属性计算而来
  就是通过各属性的hashCode值相加得到本对象的hashCode值
   基本数据类型int:直接取值
   引用数据类型:直接调用其hashCode方法取值
 
不能存放重复元素。
   是将元素进行排序的集合。
   使用元素的自然顺序对元素进行排序
   在创建集合对象时指定比较规则对元素进行排序
 
 
使用TreeSet存储自定义数据类型
  
  出现问题:
   自定义对象无法直接加入到集合中,会报异常ClassCastException类型转换异常
  原因:
   该集合不知道元素的比较规则。需要指定元素比较规则
  
  指定规则方式:
   方式1:自然排序
   让元素本身具备比较性,实现Comparable接口,重写compareTo方法
  比较两对象大小的方法返回值就是判断元素是否唯一的依据。
   即  返回0代表两元素相同
        返回正数代表新添加的元素比老元素大
        返回负数代表新添加的元素比老元素小
 
            方式2:在创建集合对象时指定比较规则对元素进行排序
              让容器知晓元素的比较规则,在创建集合容器对象时,传入一个比较器。  需要定义比较器,实现Comparator接口,重写compare方法
             public TreeSet(Comparator comparator)
          Comparator:比较器
                  int compare(T o1, T o2)   :
                  o1:  新加入的元素     o2:老元素
                  比较两对象大小的方法返回值就是判断元素是否唯一的依据。
                  即  返回0代表两元素相同
                        返回正数代表新添加的元素比老元素大
                        返回负数代表新添加的元素比老元素小 

            使用匿名内部类的方式完成TreeSet存储Monkey时使用比较器排序。 
                TreeSet ts = new TreeSet(new Comparator(){
 
            //重写方法,定义比较规则
            // * 比较规则为:
            // *         先比较年龄,再比较姓名
            @Override
            public int compare(Object o1, Object o2) {
                
                Monkey newMonkey = (Monkey)o1;
                Monkey oldMonkey = (Monkey)o2;
                
                int result;
                //先比较年龄
                result = newMonkey.getAge() - oldMonkey.getAge();
                //如果年龄相同,再比较姓名
                if(result==0) {
                    result = newMonkey.getName().compareTo(oldMonkey.getName());
                }
                return result;
        }});  
 
 
 
 
 
 
 
 
 
   1:添加功能
          V put(K key,V value):添加元素。修改元素
              如果键是第一次存储,就直接存储元素,返回null
              如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
  2:删除功能
          void clear():移除所有的键值对元素
          V remove(Object key):根据键删除键值对元素,并把值返回
  3:判断功能
          boolean containsKey(Object key):判断集合是否包含指定的键
          boolean containsValue(Object value):判断集合是否包含指定的值
          boolean isEmpty():判断集合是否为空
  4:获取功能
          Set<Map.Entry<K,V>> entrySet():获取键值对,返回set集合 Set<Entry<K, V>>
                    Entry类:键-值对
                    Entry方法:getKey()获取键
                              getvalue()获取值
                              setvalue()修改当前键的值
          V get(Object key):根据键获取值
          Set<K> keySet():获取集合中所有键的集合
          Collection<V> values():获取集合中所有值的集合
  5:长度功能
          int size():返回集合中的键值对的对数  

 

常用集合类

标签:

原文地址:http://www.cnblogs.com/javalei/p/4681229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!