ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

《java从入门到精通》——集合类 2020-01-18 java学习笔记

2021-01-18 21:29:23  阅读:80  来源: 互联网

标签:01 java 18 System 接口 println 集合 UpdateStu out


14 集合类

14.1集合类概述

  • 集合类又被称为容器,存放对象的引用,长度可变
  • 常见的有List集合、Map集合、Set集合
  • List集合、Set集合实现了Collection接口
  • java.lang.Object
    • Map
      • HashMap
      • TreeMap
    • Collection
      • Set
        • HashSet
        • TreeSet
      • List
        • ArrayList
        • LikedList

14.2Collection接口

  • Collection接口是层次结构中的根接口,构成Collection的单位,称为元素。

  • Collection接口通常不能直接使用,但该接口提供了添加、删除元素、管理数据的方法

  • package com.JiHeLei;
    import java.util.*;
    public class Muster {
        public static void main(String[] args){
            Collection list=new ArrayList();//实例化集合类对象
            list.add("a");//向集合添加数据
            list.add("b");
            list.add("c");
            Iterator it=list.iterator();//创建迭代器
            while (it.hasNext()) {//判断是否有下一个元素
                String str=(String)it.next();//获取集合中元素
                System.out.println(str);
            }
        }
    }
    
    
  • Iterator的next()方法返回的是Object

14.3List集合

  • List集合包括List接口以及List接口的所有实现类
  • List集合中的元素允许重复,各元素顺序就是对象插入的顺序,可使用索引来访问集合中的元素

14.3.1List接口

  • 包含Collection中的所有方法
  • get(int index):获取指定索引位置的元素
  • set(int index,Object obj):将集合中指定索引位置的对象修改为指定对象

14.3.2List接口的实现类

  • ArrayList类实现可变的数组,允许所有元素,包括NULL。

    • 根据索引位置对集合进行快速的随机访问
    • 插入或删除对象速度较慢
  • LinkedList

    • 插入或删除对象方便,效率高
    • 随机访问集合中的对象效率较慢
  • List list =new ArrayList();
    List list2=new LinkedList();//通过LinkedList类实例化List集合
    
  • package com.JiHeLei;
    import java.util.*;
    public class Gather {
        public static void main(String[] args){
            List list=new ArrayList();
            int i=(int)Math.random()*(list.size()-1);
            list.add("a");
            list.add("b");
            list.add("c");
            System.out.println("随机获取数组中的元素"+list.get(i));
            list.remove(2);
            System.out.println("索引2元素移除后,数组中的元素是:");
            for(int j=0;j<list.size();j++){
                System.out.println(list.get(j));
            }
        }
    }
    
    

14.4Set集合

  • Set集合包括Set接口以及Set接口的所有实现类

  • 包含Collection中的所有方法

  • Set集合对象不按特定方式排序。不能包含重复对象。

  • 常用实现类:

    • HashSet类

      • 不保证Set顺序,允许使用null元素
    • TreeSet类

      • 不仅实现Set接口,还是先java.util.SortedSet接口。

      • TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可按照指定比较器递增排序,即可以通过比较器对用TreeSet类实现的Set集合中的对象进行排序。

      • 新增方法:

      • package com.JiHeLei;
        import java.util.*;
        public class UpdateStu implements Comparable {
            String name;
            long id;
            public UpdateStu(String name,long id){
                //构造方法
                this.id=id;
                this.name=name;
            }
            public int compareTo(Object o){
                UpdateStu upstu=(UpdateStu)o;
                int result=id>upstu.id?1:(id==upstu.id?0:-1);
                return result;
            }
            //创建UpdateStu对象实例
            public static  void main(String[] args) {
                UpdateStu stu1 = new UpdateStu("李同学", 01011);
                UpdateStu stu2 = new UpdateStu("陈同学", 01021);
                UpdateStu stu3 = new UpdateStu("王同学", 01051);
                UpdateStu stu4 = new UpdateStu("马同学", 01012);
        
                TreeSet tree = new TreeSet();
                tree.add(stu1);
                tree.add(stu2);
                tree.add(stu3);
                tree.add(stu4);
                //Set集合中的所有对象的迭代器
                Iterator it = tree.iterator();
                System.out.println("Set集合中的所有元素:");
                while(it.hasNext()){
                    UpdateStu stu=(UpdateStu)it.next();
                    System.out.println(stu.name+""+stu.id);
                }
                it=tree.headSet(stu2).iterator();//截取排在stu2对象之前的对象
                System.out.println("截取前面部分的集合:");
                while(it.hasNext()){
                    UpdateStu stu=(UpdateStu)it.next();
                    System.out.println(stu.name+""+stu.id);
                }
                it=tree.subSet(stu2,stu3).iterator();//截取排在stu2与stu3对象之前的对象
                System.out.println("截取前面部分的集合:");
                while(it.hasNext()){//
                    UpdateStu stu=(UpdateStu)it.next();
                    System.out.println(stu.name+""+stu.id);
                }
            }
        }
        
        
      • 存入TreeSet类实现的Set集合必须实现Comparabe接口,该接口中的comparaTo(Object o)方法比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零、正整数。

    • headSet()、subSet()、tailSet()截取对象,指定参数位于起始位置则包含,位于终止位置则不包含。

14.5Map集合

  • 没有继承Collection接口,提供key到value的映射。Map中不能包含相同的key,每个key只能映射一个value。

  • 包括Map接口以及Map接口的所有实现类

  • 14.5.1Map接口

  • package com.JiHeLei;
    import java.util.*;
    public class UpdateStuMap {
        public static void main(String[] args){
            Map map=new HashMap();
            map.put("01","李同学");
            map.put("02","魏同学");
            Set set=map.keySet();//构建Map集合中所有key对象的集合
            Iterator it=set.iterator();//创建集合迭代器
            System.out.println("Key集合中的所有元素:");
            while(it.hasNext()){
                System.out.println(it.next());
            }
            Collection coll=map.values();
            it=coll.iterator();
            System.out.println("Value集合中的所有元素:");
            while(it.hasNext()){
                System.out.println(it.next());
            }
        }
    }
    
    
    • map.put("05",null);//Map集合中允许值对象是null,而且没有个数限制
      

14.5.2Map接口的实现类

  • 实现类有:

    • HashMap类

      • 基于哈希表的Map接口实现。
      • 允许使用null值和null键,但必须保证键的唯一性——只允许有一个null键
      • 对于添加和删除映射关系的效率更高
      • 不保证映射的顺序,不保证该顺序恒久不变
    • TreeMap类

      • 不仅实现Map接口,还是先java.util.SortedMap接口。映射关系具有顺序
      • 不允许键对象是null
    • 可通过HashMap类创建Map集合,当需要顺序输出时再创建一个完成相同映射关系的TreeMap

    • package com.JiHeLei;
      import java.util.*;
      public class MapTest {
          public static void main(String[] args){
              Map map=new HashMap();
              //创建Emp对象
              Emp emp=new Emp("001","张三");
              Emp emp2=new Emp("005","李四");
              Emp emp3=new Emp("004","王一");
              //将对象添加到集合中
              map.put(emp.getE_id(),emp.getE_name());
              map.put(emp2.getE_id(),emp2.getE_name());
              map.put(emp3.getE_id(),emp3.getE_name());
              //获取Map集合中的key对象集合
              Set set=map.keySet();
              Iterator it=set.iterator();
              System.out.println("HashMap类实现的Map集合,无序:");
              while(it.hasNext()){
                  String str=(String)it.next();
                  String name=(String)map.get(str);
                  System.out.println(str+""+name);
                  //下面的方法为何不行?
                  //Emp empp=(Emp)it.next();
                  //System.out.println(empp.getE_id()+""+empp.getE_name());
              }
              //利用TreeMap实现上述功能
              TreeMap treemap=new TreeMap();
              treemap.putAll(map);//向集合添加对象
              Iterator iter=treemap.keySet().iterator();
              System.out.println("TreeMap类实现的Map集合,键对象升序:");
              while(iter.hasNext()) {
                  String str = (String) iter.next();
                  String name = (String) map.get(str);
                  System.out.println(str + "" + name);
              }
          }
      }
      
      

标签:01,java,18,System,接口,println,集合,UpdateStu,out
来源: https://blog.csdn.net/weixin_43111836/article/details/112795293

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有