zoukankan      html  css  js  c++  java
  • 2018年4月17日JAVA

    JAVA中的集合类:

             JAVA中的集合类,是一种工具类,,就像是容器,存储任意数量的具有共同属性的对象。

    集合的作用:

             一、在类的内部对数据进行组织(如果有些属性的类型相同,但意义与作用不同,就不能把它们放在同一个集合中)

             二、可以简单而快速的搜索大数量的条目;

             三、有的集合接口,提供了一些列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素(就比如说做广播体操时候,学生站队,你可以让某队某列的学生出列,也可以让某个学生插入到某队某列)

             四、有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型。(就比如说你乘坐大巴车,存放行李的车厢就相当于一个集合,车厢里难免会有一些款式相同的行李箱,那么如何区分这些款式相同的行李箱呢?我们可以在行李箱上做上标记,而这个标记就是咱们说的关键字key)

    与数组相比---为何选择集合而不选择数组:

    一、             数组的长度,或者说容量是固定的,如果数组的长度不够用了,咱们就必须新建一个,然后把原数组的元素都给复制过去,这样就会很麻烦。而集合的长度或者说容量,它是可以在运行时扩展的,使用时比较方便(你可以把数组想象成一个打狗棍,做出来是多长就是多长,把集合当成如意金箍棒,想变多长变多长)

    二、             数组只能通过下表来访问元素,类型固定(比如说下表只能是整形的),而有的集合可以通过任意类型查找所映射的具体对象

    JAVA中的集合框架:

    主要由两大家族组成的,分别是Collection家族和Map家族,Collection和Map是两个接口,JAVA集合框架中的两个接口根。

         Collection主要有三个子接口,分别是List,Queue,Set.其中List和Queue接口里边的元素是排列有序的,并且可以是重复的,而Set中的元素是无序的,且不可重复。(List和Set比较常用,List把它翻译成序列,Queue翻译成队列,而Set翻译成集)List中有一个很常用的实现类叫ArrayList,咱们把它叫做数组序列。Queue中有一个很重要的实现类叫LinkedList(叫链表,它同时也是List中的一个实现类),Set也有一个很重要的实现类,叫HashSet(哈希集)

         Map也有众多的子接口,其中最重要的是它的实现类,其中有一个是HashMap(哈希表)。

         在collection中存储的就是一个一个的对象,而Map的内部,会以一个key,一个value两个对象为一个映射去存储数据,而这样一个映射就是一个Entry类的实例,这个Entry类它是Map的一个内部类,把它翻译成键值对,一个键一个值凑成映射的一对,其中key和value都可以是任意类型的对象(可以形象的把collection想象成单身宿舍,里边是一个一个的单身狗,而把Map想象成存储的一对一对的夫妇,他们都是成对出现的(key和value))

    List接口及其实现类------ArrayList

         (1)List是元素有序并且可以重复的集合,被称为序列

         (2)List可以精确的控制元素的插入位置或删除某个位置元素

         (3)ArrayList-----数组序列,是List的一个重要实现类

         (4)ArrayList底层是由数组实现的

    实现功能-----模拟学生选课功能

    选择课程(往集合中添加课程)

    删除所选的某门课程(删除集合中的元素)

    查看所选课程

    修改所选课程

    首先定义一个课程类

    package Chen_collection;
    
    /*
    
     * 课程类
    
     */
    
     
    
    public classCourse {
    
        private String id;
    
        private String name;
    
        public String get_id(){
    
            return id;
    
        }
    
        public String get_name(){
    
            return name;
    
        }
    
        public Course(String i,String n){
    
            id=i;
    
            name=n;
    
        }
    
    }
    
     
    
    然后是备选课程类
    
    packageChen_collection;
    
    importjava.util.ArrayList;
    
    importjava.util.Arrays;
    
    importjava.util.Iterator;
    
    importjava.util.List;
    
     
    
    /*
    
     * 备选课程类
    
     */
    
    publicclass ListTest {
    
             /*
    
              * 用于存放备选课程的List
    
              */
    
             public List courseToSelect;
    
             public ListTest(){//构造函数,用来初始化courseToselect
    
                       //由于List是一个接口,所以我们不能直接将它实例化
    
                       courseToSelect=newArrayList();//使用ArrayList()方法来实现这个List接口
    
             }
    
             /*
    
              * 用于向courseToSelect中添加备选课程
    
              */
    
             public void testAdd(){
    
                       //创建一个课程对象,并通过调用add()方法,添加到备选课程课程List中
    
                       Course cr1=newCourse("1","数据结构");
    
                       courseToSelect.add(cr1);
    
                       //Coursetemp=courseToSelect.get(0);//因为只在里边添加了一个元素,而List和数组一样,也是从0开始的
    
                       //这里会报错是因为,对象存入集合,都变成Object类型,取出时需要用类型转换
    
                       Coursetemp=(Course)courseToSelect.get(0);//因为只在里边添加了一个元素,而List和数组一样,也是从0开始的
    
                      
    
                       System.out.println("添加了一个课程:"+temp.get_id()+":"+temp.get_name());
    
                      
    
                       Course[] temp1={newCourse("3","离散数学"),new Course("4","大学英语")};
    
                       courseToSelect.addAll(Arrays.asList(temp1));
    
                       Coursecour1=(Course)courseToSelect.get(1);
    
                       Course cour2=(Course)courseToSelect.get(2);
    
                       System.out.println("添加了两门课程:"+cour1.get_id()+":"+cour1.get_name()+";"+cour2.get_id()+
    
                                         ":"+cour2.get_name());
    
             }
    
             /*
    
              * 取得List中的元素的方法
    
              */
    
             public void testGet(){
    
                       intsize=courseToSelect.size();
    
                       System.out.println("有如下课程待选:");
    
                      for(inti=0;i<size;i++){
    
                                Coursecr1=(Course)courseToSelect.get(i);
    
                                System.out.println("课程:"+cr1.get_id()+":"+cr1.get_name());
    
                       }
    
             }
    
             /*
    
              * 通过迭代器遍历List
    
              * Iterator就是迭代器的意思
    
              * 这个迭代器本身也是一个接口
    
              */
    
             public void testIterator(){
    
                       Iterator it=courseToSelect.iterator();
    
                       System.out.println("有如下课程待选:");
    
                       while(it.hasNext()){
    
                                Coursecr6=(Course)it.next();
    
                                System.out.println("课程:"+cr6.get_id()+":"+cr6.get_name());
    
                       }
    
             }
    
             public void forEach(){
    
                       for(Objectobj:courseToSelect){
    
                                Courseb=(Course)obj;
    
                                System.out.println("课程"+b.get_id()+":"+b.get_name());
    
                       }
    
             }
    
             /*
    
              * 修改List中的元素
    
              */
    
             public void testModify(){
    
                       courseToSelect.set(1, newCourse("7","毛概"));
    
             }
    
             /*
    
              * 删除List中的元素
    
              */
    
             public void testRemove(){
    
                       Course ct=(Course)courseToSelect.get(1);//把取出的类型强转为Course类型
    
                       System.out.println("我是课程:"+ct.get_id()+":"+ct.get_name()+"我即将被删除");
    
                       courseToSelect.remove(ct);
    
                       System.out.println("该课程成功被 删除");
    
             }
    
             /*
    
              * 删除多个元素
    
              */
    
             public void testRemoveAll(){
    
                       System.out.println("删除第一个位置和第二个位置上的元素");
    
                       Course []tr={(Course)courseToSelect.get(0),(Course)courseToSelect.get(1)};//创建一个要删除的课程的数组
    
                       courseToSelect.removeAll(Arrays.asList(tr));//将course数组转化成一个集合,作为参数传递过去
    
                       forEach();
    
             }
    
             public static void main(String[] args){
    
                       ListTest lt=new ListTest();
    
                       lt.testAdd();
    
                       lt.testGet();
    
                       lt.testIterator();
    
                       lt.forEach();
    
                       lt.testModify();
    
                       lt.forEach();
    
                       lt.testRemove();
    
                       lt.forEach();
    
                       lt.testRemoveAll();
    
             }
    
    }
  • 相关阅读:
    js获取页面传递过来的值
    pdf生成
    行内元素和块级元素有哪些
    Relative 定位与Absolute 定位实例
    rsync全网备份
    nginx1.15.8源码安装
    网页内容抓取工具、利用多线程
    正则表达式获取HTML标记中的内容。(注:如果内容中含有回车符,请查看第三个例子)
    SQL用一个表的数据更新另一个表的数据
    将Winform编译成DLL供C/S程序引用(Winform引用Winform)
  • 原文地址:https://www.cnblogs.com/jason111/p/8901949.html
Copyright © 2011-2022 走看看