Collection_List_Set集合总结

一、 Collection
|—————— 增添:add() addAll()
|—————— 判断: contains() containAll() isEmpaty()
|—————— 删除:clrar() remove() removeAll() retainAll()
|—————— 获取:size() toArray() iterator()
|
*****************List集合***************** 相对有序,不排重
二、 |–List

     |------------------ 因为List集合有角标的,所以可以通过角标访问集合元素,所以增加了通过角标访问的方法
      |------------------ 意思就是说再Collection基础方法上,List集合基本只是增加了角标参与的方法
      |------------------ 插入:add(index,elemet)  addAll(index ,collection) 
      |------------------ 判断: 没有新方法
      |------------------ 删除:remove(index) 
      |------------------ 获取:get(index) indexOf(element)  subList(start,end)  iterator() ,listIterator()
      |             lastIndexOf(Object o) 
      |------------------ 改 : set(index,element)  
      |------------------ 
       |--ArrayList  :基本所有方法实现List中方法,意思是只要记住List中方法就行
       |
       |--LinkedList :大部分方法和List一样, 特有方法是对集合头和尾的操作
           |------------------添加:addFrist(),addLast()
       |------------------删除:removeFirst() ,removeList() //这两个方法的返回值是被删除的元素 
       |------------------查找:getFirst(),getLast()
       |------------------ 因为以上方法若集合为空会有异常,可以被替代  add变offer,get变peek,remove变poll
       |------------------ 替代包含List的add等方法 ,所以看着方法多
       |
       |--Vctor  :Vctor 与 ArrayList 常用方法几乎一样,方法中含有elements就是他的特有方法,但是功能可以被
           |     其他方法代替,意思就是他的特有方法等同于没有,还有他是同步的ArrayLis不同步
           |
           |--Stack: 栈的存储结构:压栈(添加) push()   删除栈顶:pop() 要返回    
             查看栈顶peek() 返回但不删除
           |------    Vctor 中的方法都可用,只是会破坏Stack的存储结构,意思就是要用这个就没得必要用Vctor的方法了

***************************Set集合**********相对无序,排重
|
三、 |–Set : Set的方法和Collection的是一致的,意思是只要记住Collection 的方法就行
|–HashSet:
|—LinkedHashSet
|–Hashtable :
|–Properties:
|–TreeSet : 因为存储结构为二叉树,所以有对节点的操作,需要用的时候查阅API就行老师没细讲,其实
现在用到的基本也是Collection中方法1Hashtable,HashSet区别:1.HashSet允许存在null的键和值,Hashtable不允许
2.HashSet线程不安全(不同步)Hashtable线程安全(同步

四、Set集合及其实现类,重点是排重,和排序:

    1.如何排重:传入的对象,要重写 equals() 方法,hashCode() 方法


    2.如何排序:
        i.让存入的元素自身具有比较性:自然排序  
            方法: 存入的对象的 类 要  implements  Comparable 接口 重写 compareTo()方法  


        ii.让集合根据需求排序 : 定制排序
            方法:调用Set集合中含有比较器的构造方法,传入 比较器 Comparator 的实现类

           1)如何写比较器: 定义类 implements Compartor 实现 compare() 方法
        compareTo() 和compare() 方法基本一样的

           2)要想简单可以直接让传入的类直接实现  Compator 接口 重写 compare()方法
             当然也可以重写定义类实现
        写点伪代码帮助理解:向TreeSet 集合中 传入  多个 Person 类对象并按姓名排序 ,定制排序的方法
        class Person {
            String name;
            int age;
            Person(String name ,int agr){
            this.name =name; this.age=age;
            }
            equals(){};  hashCode(){}  //排重要重写这两个方法
            getName(){};  
            getAge(){};
        }
        class MyComperator implements Compator<Person>{
            public int compare(Person p1,Person p2){
                int num = p1.getName().compareTo(p2.getName());
                if(num==0) 
                    return p1.getAge() - p2.getAge();
                return unm;
            }
        }
        class Test{
            public static void main(){
                MyComperator myCom =new MyComperator();
                Set set = new TreeSet(myCom);

            }

        }
    传入比较器集合就会按照比较的顺序给元素排序


Collection ,List ,Set 及其实现类遍历或者获取元素其实用Iterator就行,  
    用法:
        1.要遍历的List或Set 集合对象  set
        2. Iterator it =  set.iterator();
        3. while(it.hasNext()){
            Person p = it.next();
        //获取到对象就可进行操作了,再结合基本方法就可实现复杂操作了
        }

List集合有个特有的ListIterator 可以选择使用
Iterator 只提供了remove()集合元素的方法
ListIterator 提供了增删查改的所有方法

“`

你可能感兴趣的:(java学习笔记)