javaSE第九章

集合 

(1) 集合的特点 (2) 集合的功能方法(体现集合具有什么功能) (3) 集合的实现类 (4) 集合的遍历

4. 集合分类:
        ​(1) 集合的特点 
        (2) 集合的功能方法(体现集合具有什么功能)
         (3) 集合的实现类 
        (4) 集合的遍历 

Java中的集合体系分为两大类:Collection+Map

(1) Collection集合: List集合     Set集合

(2) Map集合

二、Collection集合体系 ​ 1. 父接口:Collection ​

(1) 特点:存储多个对象(Object) (2) 功能方法: a. boolean add(Object obj):将对象obj添加到集合容器中,添加成功,返回true,添加失败-false 【重点】 b. int size():获取集合中对象的个数 c. boolean contains(Object o):判断当前集合中是否包含o对象,包含-true,不包含-false d. boolean isEmpty():判断当前集合是否为空 e. boolean remove(Object obj):将对象obj从当前集合中移除 f. void clear():清除当前集合 (3) 实现类:没有直接实现类,见子接口 (4) 遍历:详见子接口

2. 子接口:List

(1) 特点:存储多个对象,有序、有下标、元素可以重复(下标范围:0~size-1)

(2) 功能方法:部分方法继承于 父接口Collection,另一部分方法为List独有方法 注意:List下标从0开始,范围是:0~size-1 a. Object get(int index):根据下标获取对应的元素 但是如果给定下标超过有效范围,则运行报错,错误信息为:java.lang.IndexOutOfBoundsException(下标越界) b. Object remove(int index):根据下标删除对应元素,被删除的对象作为返回值返回 c. Object set(int index,Object newObj):将指定下标的元素进行替换,被替换的对象作为返回值进行返回

(3) 实现类:ArrayList

(4) 集合的遍历:

a. 下标遍历: for(int i=0;i<集合名.size();i++){ // 通过下标获取对应的元素 System.out.println(集合名.get(i)); }

b. forEach遍历:【开发重点】

for(数据类型 变量名:集合的名字){ // 通过变量名操作集合数据 } 注意:()中的数据类型取决于集合的泛型

(5) 泛型集合: 【开发重点】

a. 理解:泛型集合安全性的集合,强制要求集合中数据类型统一,方便管理

b. 语法: ArrayList<数据类型> 集合名= new ArrayList<数据类型>(); 注意:前后<>中的数据类型需要统一

c. 注意:基本数据类型需要使用对应包装类型作为泛型类型

(6) List集合接口的实现的区别:【面试内容】 a. ArrayList:底层数组实现,查询快,增删相对较慢 jdk1.2版本,线程不安全,并发效率相对快 b. Vector:底层数组实现,查询快,增删相对较慢 jdk1.0版本,线程安全,并发效率相对低 c. LinkedList:底层使用链表实现,查询效率相对低,增删效率相对较高

   补充:数据结构的两种常见存储结构:数组+链表
       数组:元素之间的内存空间连续,空间利用率相对较低,方便内存管理
       链表:元素之间的内容空间不连续,空间利用率相对较高
​
3. 子接口:Set        

(1) 特点:存储多个对象,无序、无下标、元素内容不可以重复 

(2) 功能方法:方法继承于 父接口Collection

(3) 实现类:HashSet 如果保证自定义类型的对象存储在HashSet集合中,元素内容不重复,需要存储的对象对应的类覆盖 hashCode方法和equals方法 

(4) 遍历方式:forEach遍历

(5) LinkedHashSet:是HashSet的子类,也是Set接口的实现类,没有下标、元素内容不允许重复,根据元素添加顺序进行存储 如果保证自定义类型的对象存储在LinkedHashSet集合中,元素内容不重复,也是需要存储的对象对应的类覆盖 hashCode方法和equals方法

 三、Map集合体系
​
1. Map集合的特点(Map是一个接口) 【基础重点】

(1) 存储键值对(key-value),一个键对应一个值

(2) 键:key,无序、无下标、元素不可以重复(唯一性)

(3) 值:value,无序、无下标、元素可以重复

2. 常见方法:
​

(1) V put(K key,V value):往Map集合中添加键值对,如果添加的key在当前map中不存在,则直接将键值对添加即可;如果添加的key在map集合中已经存在,则用新的value替换原来的value,被替换的value作为返回值返回 【重点】 put作用有以下两个功能: a. 添加 b. 修改:利用key修改对应value (2) int size():获取map集合中键值对个数 (3) V get(K key):根据指定的key获取对应的value值 【重点】 (4) boolean containsKey(K key):判断当前集合中是否包含某个键 (5) boolean containsValue(V value):判断当前集合中是否包含某个值 (6) V remove(K key):根据键删除对应的键值对

3. 遍历方式:
​

(1) 键遍历:通过 keySet方法获取所有的键 

a. 从map集合中获取所有的键: Set<K> keys=map.keySet();

b. 遍历Set集合获取每一个键: for( K key:keys ){

                        // 通过键获取对应值 V value = map.get(key);  // 通过 key和value操作键值 }

(2) 键值对:通过 entrySet获取所有的键值对

a. 从map集合中获取所有的键值对:Entry<K,V> Set<Map.Entry<K,V>> kvs= map.entrySet();

b. 遍历Set集合获取每一个键值对: for(Map.Entry<K,V> kv:kvs){

// 获取键 K key = map.getKey(); // 获取值 V value = map.getValue(); // 通过 key和value操作键和值                 }

4. Map集合的其他实现的区别

(1) HashMap:jdk1.2版本,线程不安全,并发效率高,允许null作为key/value

(2) LinkedHashMap:是HashMap的子类,按照键添加的顺序进行存储

(3) Hashtable:jdk1.0版本,线程安全,并发效率相对较低,不允许null作为key/value

(4) Properties:是Hashtable的子类,也是Map的实现类,key和value默认为String类,通常用于加载配置文件 Properties pro = new Properties();// 是Map的实现类

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值