1.集合介绍+体系+如何选择

一.框架概述

Java 集合可分为CollectionMap两种体系

  • Java 容器分为 Collection Map 两大类,Collection集合的子接口有SetListQueue三种子接 口。我们比较常用的是SetListMap接口不是collection的子接口。
  • Collection 集合主要有 List Set 两大接口
    • List :一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以重复,可以插入多个 null 元素,元素都有索引。常用的实现类有 ArrayList LinkedList Vector
    • Set:一个无序(存入和取出顺序有可能不一致)容器,不可以存储重复元素,只允许存入一个null元素,必须保证元素唯一性。Set 接口常用实现类是 HashSetLinkedHashSet 以及TreeSet
  • Map 是一个键值对集合,存储键、值和之间的映射。 Key 无序,唯一; value 不要求有序,允许重复。 Map 没有继承于 Collection 接口,从 Map 集合中检索元素时,只要给出键对象,就会返回对应的值对象。
    • Map 的常用实现类: HashMap TreeMap HashTable LinkedHashMap
      ConcurrentHashMap

二.迭代器遍历

  • ilterator对象成为迭代器,主要用于Collection集合中的元素。
  • 所有实现Collection接口的集合都有一个ilterator()方法,用以返回一个迭代器。
  • ilterator仅用于遍历集合,其本身不存放任何对象。

迭代器 it 的两个基本操作是 next 、hasNext 和 remove。

调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。

调用 it.hasNext() 用于检测集合中是否还有元素。

调用 it.remove() 将迭代器返回的元素删除。

        

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("Google");
        sites.add("Runoob");
        sites.add("Taobao");
        sites.add("Zhihu");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的第一个元素
        System.out.println(it.next());
    }
}

三.集合选择规则

在开发中,选择什么集合实现类,主要取决于业务操作特点,然后根据集合实现类特征进行选择,分析如下:

  •  先判断存储的类型(一组对象[单列]或一组键值对[双列])
  • 一组对象[单列]:Collecton接口
    •  允许重复:List
      • 增删多:LinkedLIst [底层维护了一个双向链表]
      • 改查多:ArrayList [底层维护 Object 类型的可变数组]
    • 不允许重复
      • 无序:HashSet [底层是HashMap , 维护了一个哈希表 即 (数组 + 链表 + 红黑树 )]
      • 排序TreeSet [底层是TreeMap,不可添加重复元素]
      • 插入和取出顺序一致:LinkedHashSet , 维护数组 + 双向链表
  • 一组键值对[双列]:Map
    • 键无序:HashMap [底层是:哈希表 jdk 7:数组 + 链表 ,jdk 8 :数组 + 链表 + 红黑树]
    •  键排序:TreeMap []
    • 键插入和取出顺序一致:LinkedHashMap
    • 读取文件 Properties
       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值