12集合(1)-----List

一.总体分类

  • Collection(包括方法add,remove,contains,clear,size)
  1. List(接口)

      LinkedList

      ArrayList

      Vector---Stack

   2. Set

      HashSet

      TreeSet

  • Map
  1. Hashtable---properties
  2. HashMap
  3. TreeMap

二.集合------List(有序,可重复)

  1.ArrayList

    这里有个包装类的概念:每一个基本类型都有一个对应的数据类型的包装类

    特点就是包装类和String类一样,有一块缓冲区, -128~127的常量池,用着更灵活自由。

    在此特殊记忆:char-----Character,int--------Integer其余基本类型包装类都同它本身的名字

    *装箱:基本类型转化为包装类

    *拆箱:包装类转化为基本类型

    装箱和拆箱的内部实现机制:自动调用valueOf()方法

public static Integer valueOf(int i){
     if(i>=IntegerCache.low&&i<=IntegerCache.high){
           return IntegerCache.cache[i+(-IntegerCache.low)];  
     }  
     return new Integer(i);
}    

    缓冲区对于double和float类型是没有用的,因为0-1之间的数有无数个啊,无法都放在常量池。

ArrayList al=new ArrayList();
al.add("ffsjkafsd");
al.remove(15);//错误
al.remove(new Integer(15));//新建,对比对象,相等删除,包装类
al.get(3);
al.toArray();
al.isEmpty();
al.set(1,"fsa");
al.indexOf("sss");//如果没有返回-1;
al.contains(null);//  返回布尔

    遍历方式有三种,普通方法在此不赘余。

for(Object o:al){
     syso(o);  
}
Interator i=al.interator();
while(i.hasNext){
    syso(i.next());  
}

  2.LinkedList

  底层是双向链表,而ArrayList的底层是数组。

  链表:增删快,查找修改慢

  数组:便于查询修改,不便增删

  LinkedList相对于数组增加了头和尾巴的操作。

LinkedList l=new LinkedList()
l.addFirst()
l.addLast()
l.getFirst()
l.getLast()

  3.Vector

  和ArrayList相同,底层也是数组,不过V是线程安全的。

Vector v=new Vector();

  栈,线程安全

Stack s=new Stack();
s.push("sss");//入栈
Object o=s.pop();//删除栈顶并返回obj
syso(o);
s.peek();//查看栈顶
s.size();
s.elementAt();//遍历方法1
s.empty;
s.search(null);//1 2 3 

猜你喜欢

转载自www.cnblogs.com/anzhilanxiao/p/10587338.html
今日推荐