首页 > 代码库 > Java集合框架

Java集合框架

Java集合框架

一. Collection接口

在集合框架中,集合(Collection)接口位于Set接口和List接口的最顶层,是Set接口和List接口的父接口。

List接口

List接口继承自Collection接口,他有如下特点:
1. List中的元素是有顺序的。

  1. List通常允许重复元素。

  2. List实现类通常支持null元素。

  3. 可以通过索引访问List对象容器中的元素。

ArrayList

ArrayList在概念上与数组相似,表示一组编入索引的元素,区别在于ArrayList没有预先确定的大小,其长度的可以按需增加。
以下是ArrayList 的方法摘要:

        List list = new ArrayList();
  1. boolean add(E e) 将指定的元素添加到此列表的尾部。

        list.add("hello");
    
        list.add(1);   
    
  2. void add(int index, E element) 将指定的元素插入此列表中的指定位置。

        list.add(1, "world"); 
    
  3. void clear() 移除此列表中的所有元素。

        list.clear();    
    
  4. boolean contains(Object o) 如果此列表中包含指定的元素,则返回 true。

        list.contains("hello");   
    
  5. E get(int index) 返回此列表中指定位置上的元素。

        list.get(2); 
    
  6. int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。

        list.indexOf("hello"); 
    
  7. boolean isEmpty() 如果此列表中没有元素,则返回 true

        System.out.println(list.isEmpty());
    
  8. E remove(int index) 移除此列表中指定位置上的元素。

        list.remove(2);  
    
  9. E set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。

        list.set(1, "wode");   
    

LinkedList

LinkedList 是实现了双向链表功能的列表,他将列表中每个对象放在独立的空间中,而且每个空间中还保存有和上一个和下一个连接的索引。

    LinkedList list = new LinkedList();
  1. boolean add(E e) 将指定元素添加到此列表的结尾。

    list.add("hello");
    list.add("world"); 
    
  2. void add(int index, E element) 在此列表中指定的位置插入指定的元素。

    list.add(2,"hah");
    
  3. void clear() 从此列表中移除所有元素。

    list.clear();   
    
  4. boolean contains(Object o) 如果此列表包含指定元素,则返回 true。

    System.out.println(list.contains(0));
    
  5. E get(int index) 返回此列表中指定位置处的元素。

    list.get(1);
    
  6. int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回-1。

    list.indexOf("hello");
    
  7. E pop() 从此列表所表示的堆栈处弹出一个元素。

    list.pop();
    
  8. void push(E e) 将元素推入此列表所表示的堆栈。

    list.push(3);
    
  9. E remove(int index) 移除此列表中指定位置处的元素。

    list.remove(2);
    
  10. E set(int index, E element) 将此列表中指定位置的元素替换为指定的元素。

    list.set(1, 9);
    

Set接口

Set接口也继承与Collecting接口,同时也继承了Collection接口的所有方法,它有如下特点:

  1. Set类型容器中不能包含重复元素,当加入一个元素到容器中的时候,要比较元素的内容是否存在重复的,所以加入Set类型的对象容器的对象必须重写equals()方法。
  2. 元素可能有顺序也有肯能没顺序。
  3. 因为元素有可能没顺序,所以不能基于索引访问Set中的元素。

HashSet类

HashSet类是基于哈希算法的Set接口实现,他有如下几个特点:

  1. 当遍历HashSet时,其中元素是没有顺序的。

  2. HashSet中不允许出现重复元素。这里的重复元素是指有相同的哈希码,并且用equals()方法进行比较时,返回True的两个对象。

  3. 允许包含null元素。

    Set<String> set = new HashSet<String>();
    

方法摘要
1. boolean add(E e) 如果此 set 中尚未包含指定元素,则添加指定元素。

    set.add("zhangsan");
  1. void clear() 从此 set 中移除所有元素。

    set.clear();
    
  2. boolean contains(Object o) 如果此 set 包含指定元素,则返回 true。

    set.contains("lisi");
    
  3. boolean isEmpty() 如果此 set 不包含任何元素,则返回 true。

    set.isEmpty();
    
  4. Iterator iterator() 返回对此 set 中元素进行迭代的迭代器。

    Iterator<String> it = set.iterator();       
    String s = null;
    while ( it.hasNext()) {                     
         s = it.next();
    
         System.out.println(s);
    }
    
  5. boolean remove(Object o) 如果指定元素存在于此 set 中,则将其移除。

    set.remove("lisi");  
    

TreeSet类

TreeSet类不仅实现类Set接口,还实现了SortedSet接口,从而保证了集合中的对象按照一定顺序排序。(字典顺序)

    Set<String> set = new TreeSet<String>();
  1. boolean add(E e) 将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。

    set.add("zhangsan");
    
  2. E ceiling(E e) 返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null。

     set.ceiling("lisi");
    
  3. comparator() 返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null。

    set.comparator();
    
  4. boolean contains(Object o) 如果此 set 包含指定的元素,则返回 true。

    set.contains("lisi");
    
  5. E floor(E e) 返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null。

     set.floor("lisi");
    
  6. Iterator iterator() 返回在此 set 中的元素上按升序进行迭代的迭代器。

    Iterator<String> it = set.iterator();       
    
  7. boolean remove(Object o) 将指定的元素从 set 中移除(如果该元素存在于此 set 中)。

    set.remove("lisi");  
    
  8. SortedSet subSet(E fromElement, E toElement) 返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。

    set.subSet("lisi", "lier");
    

Map接口

Map接口 是java集合框架中不同于Collection接口的另一个重要接口,它对应的是一种从到值的对应关系集合。

HashMap类

HashMap类是基于哈希算法的Map接口实现。HashMap将它的建保存在哈希表中进行维护,键是唯一的。但是,HashMap并不保证键以特定序列排序,特别是不保证顺序永久不变。

    Map<String, String> map = new TreeMap<String, String>();
  1. V put(K key, V value) 在此映射中关联指定值与指定键。

    map.put("cd", "成都");
    map.put("bj", "北京");
    map.put("sh", "上海"); 
    
  2. V get(Object key)返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null。

    System.out.println(map.get("cd"));
    
  3. boolean containsKey(Object key) 如果此映射包含对于指定键的映射关系,则返回 true。 boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。

    map.containsKey("cd");
    map.containsValue("成都");
    
  4. Set keySet() 返回此映射中所包含的键的 Set 视图。

    System.out.println(map.map.keySet());
    
  5. V remove(Object key)从此映射中移除指定键的映射关系(如果存在)。

    map.remove("cd");  
    

TreeMap类

TreeMap类中键存放方式与TreeSet相似,它将键存放在树中,键的顺序按照自然顺序或者自定义顺序两种方式排列。

    TreeMap<String, String> map = new TreeMap<String, String>();
  1. K ceilingKey(K key) 返回大于等于给定键的最小键;如果不存在这样的键,则返回 null。

    map.ceilingKey("cd");
    
  2. boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。

    map.containsKey("cd"); 
    
  3. boolean containsValue(Object value) 如果此映射为指定值映射一个或多个键,则返回 true。

    map.containsValue("成都");   
    
  4. K floorKey(K key) 返回小于等于给定键的最大键;如果不存在这样的键,则返回 null。

    map.floorKey("cd");  
    
  5. V get(Object key) 返回指定键所映射的值,如果对于该键而言,此映射不包含任何映射关系,则返回 null

    map.get("cd");   
    
  6. Set keySet() 返回此映射包含的键的 Set 视图。

    map.keySet();  
    
  7. V put(K key, V value) 将指定值与此映射中的指定键进行关联。

    map.put("cd", "成都");
    map.put("bj", "北京");
    map.put("sh", "上海");
    
  8. V remove(Object key) 如果此 TreeMap 中存在该键的映射关系,则将其删除。

     map.remove("cd");
    
  9. SortedMap<K,V> subMap(K fromKey, K toKey) 返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括)。

    map.subMap("cd", "sh");

Java集合框架