java集合简介

java集合主要包括以下几点

  • Java 集合概述
  • Collection 接口
  • Iterator 接口
  • Set
  • List
  • Map
  • Collections 工具类
  • Enumeration

1.java集合概述

  ?Java 集合就像一种容器,可以把多个对象的引用(对象本身还在栈内存中,集合中放的是对象的引用)放入容器中。
  ?Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组
  ?Java 集合可分为 Set、List 和 Map 三种体系
    –Set:无序、不可重复的集合
    –List:有序,可重复的集合
    –Map:具有映射关系的集合
  在 Java5 之前,Java 集合会丢失容器中所有对象的数据类型,把所有对象都当成 Object 类型处理;从 Java5 增加了泛型以后,Java 集合可以记住容器中对象的数据类型
java集合简介
 
 

2.Collection 接口,Iterator接口

  Collection 接口是 List、Set 和 Queue 接口的父接口(而不是Map的父接口,Map和Collection是并列的关系),该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合:
  Collection中的方法简介(了解Collection方法,那么对其子类的应用也就很简单了):
java集合简介
public class TestCollection {
    public static void main(String[] args) {
            //1. 创建一个 Collection 接口的对象。接口对象,使用多态的方式. 
                Collection collection = new ArrayList();
            
                //2. Collection 重要方法说明: 
                
                /**
                 * 2.1 用于添加元素的:
                 * add():加入一个对象
                 * addAll():加入一组对象
                 */
                Person p1 = new Person();
                collection.add(p1);
                collection.add(new Person());
                
                Collection collection2 = new ArrayList();
                collection2.add(new Person());
                collection2.add(new Person());

                collection.addAll(collection2);
                
                System.out.println(collection.size()); 
                
                /**
                 * 2.2 用于访问集合的方法: 
                 * size():获取集合的长度: 
                 * iterator():对集合进行遍历的方法,可以得到对应的 Iterator 接口对象. 
                 * 
                 * Iterator: 迭代器
                 * ①. 获取 Iterator 接口对象: 
                 * ②. 使用 while 循环和 Iterator 对象遍历集合中的每一个元素. 具体使用 Iterator 接口的
                 *    hasNext() 和 next() 方法. 
                 */
                Iterator iterator = collection.iterator();
                
                while(iterator.hasNext()){
                    Object obj = iterator.next();
                    System.out.println(obj); 
                }
                
                /**
                 * 2.3 移除集合中的元素: 
                 * remove(): 移除某一个指定的对象. (API中)通过调用对象的 equals() 方法来判断要移除的那个元素在集合中是否存在. 以及是否能够成功移除. 
                 *           也就是说拿当前对象和集合中的对象一个个的比,如果有相同的equal返回true,就可以移除掉
                 *           但是如果在Person里面重写了equals()方法,而且始终返回false,那么就永远也无法移出一个Person对象
                 * removeAll():移出一组对象
                 * clear(): 使集合中的元素置空. 
                 */
                collection.clear();
                
                boolean result = collection.remove(p1);
                System.out.println(result); 
                
                result = collection.removeAll(collection2);
                
                System.out.println(collection.size()); 
                
                /**
                 * 2.4 用于检测集合的方法
                 * retains():是否包含一个对象
                 * retainsAll():是否包含一个对象集合
                 * isEmpty()
                 * 
                 */
                System.out.println(collection.contains(new Person()));//false
                System.out.println(collection.contains(p1));//true
                System.out.println(collection.containsAll(collection2));//true
                
                System.out.println(collection.isEmpty()); //false
                collection.clear();
                System.out.println(collection.isEmpty()); //true
                
                /**
                 * 2.5 其他方法
                 * toArray(): 返回集合对应的数组对象
                 * T [] toArray(T[]): 涉及到泛型(比如传入参数是一个Person对象数组,那么返回值也是一个Person对象数组)
                 * 
                 * equals(): 比较两个集合是否相等.
                 *          如果是ArrayList,不仅长度和每个对象都要一样,而且顺序也要一样,因为ArrayList是有顺序的
                 *          对于HashSet就没有顺序要求 
                 * hasCode(): 返回集合的哈希码
                 */
                Object [] objs = collection.toArray();
                System.out.println(objs.length); //4
                
                Person p2 = new Person();
                
                Collection collection3 = new HashSet();
                collection3.add(p1);
                collection3.add(p2);
                
                Collection collection4 = new HashSet();
                collection4.add(p2);
                collection4.add(p1);
                
                System.out.println(collection3.equals(collection4)); 
                
                /**
                 * 使用增强 for 循环的方式来对集合进行遍历
                 */
                for(Object obj: collection){
                    System.out.println(obj); 
                }
        }
  }
java集合简介


3.Set

      Set接口是Collection的子接口,所以前面讲的方法都可以用

      Set中包含

    HashSet
    LinkedHashSet
    TreeSet
  ?Set 集合不允许包含相同的元素,如果试把两个相同的元素加入同一个 Set 集合中,则添加操作失败。
  ?Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals 方法
3.1 HashSet
  HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集合时都使用这个实现类。
  ?HashSet 按 Hash 算法来存储集合中的元素,因此具有很好的存取和查找性能。
  ?HashSet 具有以下特点:
    –不能保证元素的排列顺序
    –HashSet 不是线程安全的
    –集合元素可以使 用null
 
 
 
 
 
 
 
 
 
 
4.Collections 工具类
5.Enumeration
 
 
 
 
 
 
 

java集合简介

上一篇:java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表


下一篇:韩美林的“七字”教学法