zoukankan      html  css  js  c++  java
  • 集合2

    集合框架结构

    一、概念:

    集合框架由一组用来操作对象的接口组成,不同的接口描述一组不同的数据类型。

     

    二、结构和分类:

    object是基类,其下有Map接口和Collection接口,其中Map有

    HashMap和TreeMap两个子接口,而Collection有list和set两个接口,

    list有Hashset和TreeSet,list有ArrayList和LikedList两个子接口。

     

    三、特点:

    1.Collection接口存储一组允许重复、无序的对象。

    2.set接口继承Collection接口,存储一组唯一(不允许重复)、无序的对象。(类似于数学的集合

    3.List接口继续了Collection接口,存储一组不唯一的(允许重复)、有序(以元素插入的次序来放置元素,不会重新排列)的对象。(与数学的集合概念完全相反

    4.Map接口存储一组成对的键——值对象,提供key(键)到value(值)的映射。Map中的key不要求有序,不允许重复。value同样不要求有序,且允许重复。

     

    *List接口

    List接口有序的集合,它继承了Collection的所有的方法,且添加了一些自己的方法。

     

    *List实现类———1.ArrayList

    特点:

    1.长度可变,类似于一个动态数组。

    2.集合中元素的存放顺序于添加顺序一致。

     

    *List实现类——2.LinkedList

    若需要频繁地插入和删除,一般用LinkedList,LinkedList类似于数据结构中的双向链表。

     

    package kgy.util;
    import Java.util.LinkedList;
    import Java.util.List;
    publi class StudentLinkedListTest{
        public static void main(String[] args) {
            /*根据班级名称获取班级学生信息*/
            List <Student>students=StudnetBiz.getStudents("12网编1");
            LinkedList <student>11=new LinkedList <Student>(students);
            System.out.println("12网编1班共有"+11.size()+"名学生!");//获取学生人数
            Student s1=new Student("1","张三",0);
            Student s2=new Student("2","李四",0);
            li.addFirst(s1);
            System.out.println("12网编1班共有"+11.size()+"名学生!");
            System.out.println("本班是否有李四这个学生?"+11.contains(s2));
            System.out.println("将第一个元素弹栈:"+11.pop());
        }
    }
    //编译不通过

     

    *Set接口(概念类似于数学中的集合)

    特点:Set不包含e1.equals(e2)的元素对e1和e2,并且最多包含一个null元素。  //? ?

    若两次插入同一个元素,其实只会存储一个元素,而不是两个。

    说明:Set不提供get方法,必须通过迭代器Iterator才可以遍历元素。

    package kgy.util;
    import Java.util.HashSet;
    import Java.util.Iterator;
    
    import Java.util.set;
    
    public class StudentHashTest{
        public static void main(String[] args) {
            Set <Student>set=new HashSet<Student>();
    
            Student s1=new Student("1","张三",0);
            Student s2=new Student("2","李四",0);
    
            set.add(s1);
            set.add(s2);
            System.out.println("set共有"+set.size()+"名学生!");
            set.add(s2);
            set.add(s1);
            System.out.println("set共有"+set.size()+"名学生!");
    
            /*遍历set中所有的元素*/
            Iterator <Student>it=set.iterator();
            while(it.hasNext()){
                System.out.println(it.next());
            }
    
        }
    }

     

    *Map接口(特点总结:级联、映射)

    特点:Map接口专门用于处理键值对映射数据的存储,Map中键不可重复,值可以

    重复。 

    使用场景:ArrayList能让用户用数字在一个对象序列里面选择,即它将数字和

    对象关联。若想更具某一条件去选择在对象序列中选择的话,就要用到Map

    接口,就是讲键映射到值的对象。一个映射不能包含重复的键,每个键最多只能

    映射一个值。

     

    package kgy.util;
    import Java.util.HashMap;
    import Java.util.Iterator;
    import Java.util.Map;
    
    public class StudentHashMapTest{
        public static void main(String[] args) {
            Map <String,Student>map=new HashMap<String,Student>();
    
            Student s1=new Student("1","张三",0);
            Student s2=new Student("2","李四",0);
            map.put("1",s1);
            map.put("2",s2);
           //用法??
            System.out.println("Map中共有"+map.size()+"名学生!");
            map.put("3",s2);
            System.out.println("map中共有"+map.size()+"名学生!");
            System.out.println(map.keySet());
            System.out.println(map.values());
    
            /*通过键很容易找到相应的值*/
            Student sn=map.get("3");
            System.out.println(sn);
    
            /*遍历map中所有的元素*/
            System.out.println("开始遍历所有元素");
            Iterator <Student>it=map.values().iterator;
            while(it.hasNext()){
               //hasNext用法??
                System.out.println(it.next());
            }
        }
    }

     

    //编译有问题

    //速度上比ArrayList快,它是通过hash码直接索引而来

    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    Azure 中的多个 VM NIC 和网络虚拟设备
    程序猿入职秘籍大分享!分分钟走上人生巅峰
    高考估分查分选志愿一键搞定_支付宝又操办了件人生大事
    三大新兴力量_引领中国消费新经济丨图媒体
    史上最全编程语言列表_你掌握了哪些?
    市值登顶亚洲后_马云对话全球投资者:与未来相比阿里还是个baby
    无法访问ECS云服务器怎么解决?
    快速搭建phpwind论坛系统
    Linux全自动安装面板脚本_支持目前比较流行的国内面板
    为阿里云ECS(Windows 2012)创建IPv6隧道地址
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/8395014.html
Copyright © 2011-2022 走看看