Java学习笔记(十一)

来源:互联网 发布:java超市管理系统项目 编辑:程序博客网 时间:2024/05/18 01:46
一、回顾
    1、Itrator与ListIterator
    Itrator从前向后的迭代:
    Itrator<TypeName> itrator=collectionObj.itrator();
    while(itrator.hasNext()){
         TypteName obj=itrator.next();
         //具体业务;
    }
     
    ListIterator双向迭代:
    ListItrator<TypeName> listItrator=collectionObj.listItrator();
    while(listItrator.hasNext()){
           nextIndex()得到下一个项的索引值
           TypteName obj=listItrator.next();
           //具体业务;
    }
    while(listItrator.hasPrevious()){
           previousIndex()得到前一个项的索引值;
           TypteName obj=listItrator.previous();
           //具体业务;
    }
    add()可以直接操作加到头部
    listItrator.add(TypeName obj);
    set()和remove()都需要先取得相应项的指针,然后再操作
    listItrator.set(TypeName obj);
    listItrator.remove();
    注意:当集合对象确定迭代器对象后,迭代操作前,不允许通过集合对象自己修改集合元素,而应该使用迭代器对象实现修改操作。
          
    2、List与Set
                List接口规定了实现了List接口的集合类型,其中的元素可以重复。
                List适合经常追加数据,插入,删除数据。但随即取数效率比较低。
                Set接口规定了实现了Set接口的集合类型,其中的元素不允许重复。
                Set适合经常地随即储存,插入,删除。但是在遍历时效率比较低。
    3、具体实现类
       3-1、ArrayList
        理解为动态数组,可以通过索引操作其中的元素。
        isEmpty(),size(),contains(),add(Object obj),add(int index,Object obj)
        get(int index),remove(int index),remove(Object obj),itrator(),set()
        indexOf(),lastIndexOf()等。
        创建对象:
        ArrayList<TypeName> arrayList=new ArrayList<TypeName>();
       
       3-2、LinkedList
            相当于双向链表,相比ArrayList多了一些方法。
            addFirst(),addLast(),removeFist(),removeLast(),getFirst(),getLast()
            创建对象:
            LinkedList<TypeName> linkedList=new LinkedList<TypeName>();
            
       3-3、HashSet
            不允许重复元素,数据结构是哈希表,所以,不保证存储元素的顺序。
            创建对象:
            HashSet<TypeName> hashSet=new HashSet<TypeName>();
            其行为和Conllection接口中的方法一致。
            
       3-4、TreeSet
            不允许重复元素,在add(TypeName obj)时,如果obj已经存在,那么添加不成功,但是不会报错,方法会返回false值,数据结构是二叉树,所以,会排序。
            创建对象:
            TreeSet<TypeName> treeSet=new TreeSet<TypeName>();
            要求:TypeName类是实现了Comprable接口的。
            TreeSet<TypeName> treeSet=new TreeSet<TypeName>(Comparator comparator);
            要求:在创建集合对象时,匹配一个比较器。
            
    4、Comprable
       4-1、TreeSet<TypeName> treeSet=new TreeSet<TypeName>();
            要求:TypeName类是实现了Comprable接口的。
            
       public abstract int compareTo(Object obj);
       
       public class TypeName implements Comprable<TypeName>{
               //实现compareTo方法
               public int compareTo(TypeName typeName){
                     if(this.fieldName>typeName.fieldName){
                                return 1;
                      }else if(this.fieldName<typeName.fieldName){
                                return -1;
                      }else{
                                return 0;
                     }
               }
       }
       
    5、Comparator
       5-1、TreeSet<TypeName> treeSet=new TreeSet<TypeName>(Comparator comparator);
            要求:在创建集合对象时,匹配一个比较器。
       public abstract int compare(Object obj1,Object obj2);
       
       public class ComparorTypeName implements Comparator<TypeName>{
                 //实现compareTo方法
                 public int compare(TypeName typeName1,TypeName typeName2){
                        if(typeName1.fieldName>typeName2.fieldName){
                               return 1;
                        }else if(typeName1.fieldName>typeName2.fieldName){
                               return -1;
                        }else{
                               return 0;
                       }
                 }
       }
       比较器类型可以是外部类,也可以成员内部类,可以是静态内部类,也可以是匿
       名类。
       
       TreeSet<TypeName> treeSet=new TreeSet<TypeName>(new ComparorTypeName());
       当通过如下方法添加元素时,就可以按照比较器确定的比较原则排序。
       treeSet.add(obj);
二、今天的内容
    1、Map接口:规定了以键值对方式存储元素的集合类型,必须拥有的特征。
               通过KEY值可以找到其对应VALUE值,键值不可以重复,值可以。
               拴住 你
               狗蛋 你
               key 和 value都是引用型。
               
               注意:在用put(key, value)添加元素时,如果key已经出现过,新的添加
                会覆盖原来的value。
                 
       1-1、实现类:
       1)HashMap
       
       题目:自定义HashMap对象,在其中通过泛型确定操作的键值对类型,然后通过增删
             改查(通过key查,通过values集合查,key的集合遍历,Map.Entry集合查)
             来学习常用方法的使用.
       
       2)TreeMap:天然会排序,升序,按照key排序。
       
         
    2、Collections类
    3、Arrays类      
原创粉丝点击