一开始接触容器时,总感觉里面东西很多很难。学完总结一下,常用的无非以下几种,方法也无需全部记住,记住几个关键的即可,其中红色的方法务必记住。

Collection                                           
├List                                      
│   ├LinkedList                              
│   ├ArrayList 
│   └Vector                                    
│        └Stack                                            
└Set

     Hashset                                                     
Map 
   ├Hashtable 
   ├HashMap 
   └WeakHashMap

1、Collection:(常用的子接口Set和List)

常用的方法:

int size();       boolean isEmpty();     void clear();    boolean contains(Object element);  

equals boolean add(Object element);     boolean remove(Object element) ;    boolean containsAll(Collection c);

boolean addAll(Collection c);    boolean removeAll(Collection c);    boolean retainAll(Collection c);   //求交集

eg:size():此时容器当中的元素个数;    contains(Object o):是否包含给定的o值;

Array读快改慢

Linked改快读慢

Hash搜索极快,遍历极慢

Tree插入/搜索都比较快,适合做索引


(1)Set:无序不可重复常用的实现类:HashSet,TreeSet;

无序:第一次随机,接下来如果没有其它元素的加入或退出,则一直保持这个的顺序,有别于随机;

不可重复:小心“对象”问题,必须先重写equals和hashcode()方法;hashcode()判断两个对象是否指向同一个对象;

常用方法:Set接口本身不提供额外的方法,所有的方法都来自Collection;

常用实现类:HashSet(),TreeSet();


(2)List:有序可以重复;常用的实现类:ArrayList;LinkedList;

常用方法:除了Collection里面的方法外,还有如下:

Object get(int index);  //通过下标输出下标对应的值

Object set(int index, Object element); //通过下标去替代相应的下标值        

void add(int index, Object element);   //表示从index位置插入给定的o值       add(Oject o);    

Object remove(int index);     //删除下标所对应的元素                  

int indexOf(Object o);    //获取o值在给定容器中第一个出现的索引

int lastIndexOf(Object o);    // 获取0值在给定容器中最后出现的索引


remove(int index);//表示通过下标去移除对应下标的值 ,

注意:如果给定的值有Integer类型,不以具体的值来移除,而是以下标对应的值进行移除;remove(Object o);

注意:ArrayList里面有两个add(),remove()?答:一个方法来自Collection;另一个来自自身的方法.   


(3)Map接口:它是由K,V值组合而成,且K值不能重复;

常用的实现类:HashMap:无序;

              TreeMap:按照K值大小来进行输出;

              LinkedHashMap:按照输入的先后顺序进行输出;

常用的方法:

Object put(Object key, Object value);

Object get(Object key);    //返回key值所对应的value值;

Object remove(Object key);

boolean containsKey(Object key); //包含键值,常用来判断用户名是否存在的方法

boolean containsValue(Object value);

int size();

boolean isEmpty();

void putAll(Map t); 

void clear();

keyset():把Map里面的K值赋值给Set接口;

values():把Map里面的V值赋值给Collection接口;