集合三大接口之一:Collection

时间:2022-03-20 19:52:29

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,表示两个对象重复,不同的话,使用大小来                                                      决定排序的顺序

相关文章