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 集合可以记住容器中对象的数据类型
2.Collection 接口,Iterator接口
Collection 接口是 List、Set 和 Queue
接口的父接口(而不是Map的父接口,Map和Collection是并列的关系),该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和
Queue 集合:
Collection中的方法简介(了解Collection方法,那么对其子类的应用也就很简单了):
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); } } }
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