一、理解
1. 概念:一种操作便利的对象容器,存储多个对象,多数情况下可替代数组。
2. 位置:所有集合的接口和相关实现类都是位于 java.util 包中
3. 学习集合从一下几个内容进行:
(1) 集合的特点(2) 集合的常用方法(3) 集合的实现类(4) 集合的遍历
4. 集合的分类:
(1) Collection集合体系-> List集合-> Set集合(2) Map集合体系-> Map集合
二、Collection集合体系
1. 父接口:Collection
(1) Collection接口的特点:存储多个对象,即存储数据类型Object(2) 方法:boolean add(Object obj) : 添加一个对象 【重点】int size() :返回此集合中的元素个数 【重点】boolean contains(Object o) : 检查此集合中是否包含o对象boolean remove(Object o) :在此集合中移除o对象void clear() :清空此集合中的所有对象。boolean isEmpty() :判断此集合是否为空(3) 实现类:具体看子接口(4) 遍历:具体看子接口
2. 子接口:List
(1) List接口的特点:存储Object类型的对象,有序、有下标,元素可以重复(下标从0开始,依次为1、2、...)(2) 方法:List是Collection的子接口,所以Collection接口中定义的方法List都可以使用,同时自身也定义了一些方法Object get(int index) //返回集合中指定位置的元素 【重点】Object remove(int index) //移除index位置上的元素Object set(int index, Object element) //替换index位置上的元素(3) 实现类:ArrayList(4) 遍历:a. 下标遍历:// 控制集合的下标:从0开始,到 size-1for(int i=0;i<list.size();i++){// 根据下标获取对应数据:getSystem.out.println(list.get(i));}b. forEach遍历:for(泛型类型 变量名 : 集合名){// 利用变量名操作集合元素3. 子接口:Set}(5) 泛型集合:强制约束集合中的元素类型统一ArrayList<数据类型> 集合名 = new ArrayList<数据类型>();ArrayList<数据类型> 集合名 = new ArrayList<>(); -->数据类型可以省,<>保留注意:<>前后的数据类型必须统一;基本数据类型的泛型需要使用对应的包装类型(6) 不同实现类区别:ArrayList:底层用数组实现,查询快,增删慢JDK1.2提供,线程不安全,并发效率高。Vector:底层用数组实现,查询快,增删慢JDK1.0提供,线程安全,并发效率低。LinkedList:底层用链表实现,查询慢,增删快JDK1.2提供,线程不安全,并发效率快。
3. 子接口:Set
(1) 特点:存储多个Object类型的对象,无序、无下标、元素不可以重复(内容不允许重复)(2) 方法:继承于 父接口 Collection(3) 实现类:HashSet注意:为了保证存储在HashSet集合中对象内容不重复,需要覆盖 equals和 hashCode方法LinkedHashSet:存储多个Object类型的对象,按照添加顺序进行存储、无下标、元素不可以重复(内容不允许重复)
三、Map集合体系
1. 特点:用于存储任意键值对(Key-Value);键(key):无序、无下标、不允许重复(唯一) ; 值(value):无序、无下
标、允许重复
2. 常见的方法:
V put(K key,V value):往Map中存储一个键值对,如果key在map中已经存在,则新值覆盖旧值;如果key在map中不存在,则直接存储,返回值为null。V remove(K key):根据键删除集合中对应的键值对,返回被删除的value。V get(K key):根据key查询对应的value。int size():获取集合中键值对的数量boolean containsKey(K key):判断map集合中是否包含key的键,返回true/false.boolean containsValue(V value):判断map集合中是否包含value的值,返回true/false
3. 常见的实现类:HashMap
4. 遍历方式:
// 1. 获取map中所有的键Set<String> ks = map.keySet();// 利用 forEach遍历 Set 集合,获取每个键for(String s:ks){// 通过键 获取 对应的值:getSystem.out.println(s+"-"+map.get(s));}System.out.println("-------值遍历-----了解----");// 2.获取 map集合中所有值Collection<String> cs=map.values();// 利用 forEach遍历 集合获取每个值for(String c:cs){System.out.println(c);}System.out.println("------键值对-----------");// 3. 获取map集合中所有的键值对Set<Map.Entry<String,String>> ks22=map.entrySet();// 通过 遍历 集合 获取每个键值对for(Map.Entry<String,String> keyValue:ks22){// 获取 键String key=keyValue.getKey();// 获取 值String value=keyValue.getValue();System.out.println(key+"------"+value);}
5. Map其他的实现类:
HashMap【重点】:JDK1.2版本,线程不安全,运行效率快 ;允许用null 作为key或是value。LinkedHashMap:HashMap的子类,按照元素添加的顺序进行存储。Hashtable :JDK1.0版本,线程安全,并发效率慢;不允许null作为key或是value。Properties :Hashtable的子类,要求key和value都是String。通常用于配置文件的读取。TreeMap :实现了SortedMap接口(是Map的子接口),可以对key自动排序。

被折叠的 条评论
为什么被折叠?



