集合三大接口之一:Collection

来源:互联网 发布:管家婆数据库密码忘记 编辑:程序博客网 时间:2024/05/18 02:02

collection:List、Set

1)List:(有序可变的数组 ,数组一般存放的是对象的引用,允许添加重复元素)
                  ArrayList      ---------> 数组形式存储,默认对象数组10,方便添加与查找,线程不安全(不同步),效率高。
                  LinkedList    ---------> 链表结构存存储,双向链表,适合插入和删除,效率低。
                  Vector         ---------> 数组形式存储, 默认对象数组10,每次扩容10,线程安全(同步),效率低
   
Arraylist的常用方法:
      1)增 : add()
      2)删 : remove(如果是值的话就移除一个)  、
                    removeAll()相等于clear、 
                    clear()
      3)查 : get()  、
                    comtains (返回boolean) 、
                    indexof(此列表中第一次出现的指定元素的索引,如果列表不包含该元素,则返回 -1)、                         
                    isEmpty(如果此列表中没有元素,则返回 true
      4)改:set(改哪个,改值)
ArrayList< Object > list=new ArrayList< Object >();
        list.add(1);
        list.add(2);
        list.add(0, 2);System.out.println( list );         //在第几个位置插入元素
        list.addAll(list);System.out.println( list );      //把list的元素加到list中
        list.addAll(0, list);System.out.println( list );  //把list中的元素加到list中第一个位置的元素中

        System.out.println( list.size() );                    //返回list的长度
        System.out.println( list.contains(1) );          //查看list中是否有1元素,返回boolearn类型

        System.out.println( list.get(0) );                  //查看list中的第一个元素
        System.out.println( list.set(0, 10) );  System.out.println( list );  //修改第一个元素的值位10,返回下标
       
        System.out.println( list.indexOf(8));            //此列表中第一次出现的指定元素的索引,如果列表 不包                                                                                 含该元素,则返回 -1
        list.remove(0); System.out.println( list );     //移除第一个元素
        list.clear();                                                   //清空list列表

        System.out.println( list.isEmpty() );            //查看list中是否为空的,返回boolearn类型


2)Set:(无序可变的数组,不允许添加重复元素)
                   HashSet      ------>HashMap的一个实例、不保证遍历顺序恒久不变。
                                                  添加元素时如何判断是否重复,先调用对象的hashCode方法求值,如果                                                    
  hash值在集合中不存在,那么该对象可以添加(不重复的);如果hash值                                                
          相同,(还不能确定对象)是否相同,因为不同的对象有可能产生不同的                                                    
  hashCode值,那么需要再调用equals方法来验证。equals方法返回                                                          
  true,表示两个对象相同,返回false,表示两个对象不同。
                                                 (即两个对象值相同,把两个对象写成一个对象的话就要重写对象(类)                                                        
 中的hashCode方法和equals方法)
                   TreeSet       ------>TreeMap的一个实例、自热顺序排列(从小到大)
                                                  在TreeSet集合中添加自定义对象,必须实现 Comparable接口,因为添加                                                  
 方法会使用compareTo方法来验证对象的排序位置,并验证对象是否重                                                      
 复,如果compareTo返回0,表示两个对象重复,不同的话,使用大小来                                                    
 决定排序的顺序

0 0