码迷,mamicode.com
首页 > 其他好文 > 详细

016_List/Set/Map

时间:2019-12-11 21:18:32      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:map   each   key   支持   reac   compareto   hashset   存储   size   

先写一下3这种遍历方法

for循环

List<Teacher> list = new ArrayList<>();
        list.add(new Teacher("张三",21));
        list.add(new Teacher("李四",28));
        list.add(new Teacher("王五",18));
                // for 循环
        for(int i = 0;i<list.size();i++){
            System.out.println(list.get(i));
        }
                // 增强for :foreach+补全
                for (Object object : list) {
            System.out.println(object);
        }
                // 迭代器ITerator, 这是集合特有的
        Iterator it = list.iterator();
        while(it.hasNext()){
            Object next = it.next();
            Teacher tea = (Teacher)next;
            if(tea.getAge()<20){
                it.remove();
                System.out.println(tea);// 不合格学生
            }
        }    

List 接口

  1. ArrayList 数组结构 这是list接口的主要实现类
  2. Vector 底层也是数组,线程安全,但效率较慢
  3. LinkedList 链表结构 查询效率慢,增删块

Set

特点:无序,无下标,不重复

set没有特有的方法,都是继承于父接口

底层是通过哈希计算得出内存的地址,如果地址不同则直接赋值,如果地址相同就在看内容。

相同对象,哈希值一定相同,不同对象哈希值可能相同

①HashSet 作为主要实现类

  1. 判断hashCode(是否相同,不同直接存储,当做不重复处理)
  2. 相同时,他才会进行equals比较内容,当内容相同了,不添加

②TreeSet 实现 自然排序

  • 要求:性价到该集合里的类必须支持排序
  • 必须要实现Comparable接口否则汇报类型转换异常
  • 实现Comparable接口 要重写CompareTO()方法,确定比较的依据

定制排序

  • 1.创建一个比较器
    •   comparetor  抽象方法
    •   compare
  • 在创建  TreeSet时
    •   通过有参构造把比较器对象穿进去

自然排序和定海排序比较:

定制排序的优先级高,而且和类结耦!!!

③LinkedHashSet

基于链表的结构  多维护一层添加顺序

Map

遍历:

  所有的key

      keySet() ==> Set 集合

  所有的value

      values() ==> Collection集合

  所有的键值对

      entrySet ==> Set 集合

      在得到键值对后  键值对的类型  Map.Entry 类型

        getKey() 获取该键值对的键

        

016_List/Set/Map

标签:map   each   key   支持   reac   compareto   hashset   存储   size   

原文地址:https://www.cnblogs.com/a276665092/p/12024991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!