Collection(集合)和Map

集合:
集合概述:java中的集合类:是一个工具类,就像是容器,存储任意数量的具有共同属性的对象
集合的作用:
1.在类的内部,对数据进行组织;
2.简单而快速的搜索大数量的条目
3.有的集合接口,提供了一系列排列有序的元素,并可以在徐磊中那快速的插入或者删除有关元素
4.有的集合接口,提供了映射关系,可以通过关键字(可以   )去快速查找对应的唯一对象,而这个关键字可以是任意类型
(数组和集合的区别   :
1.数组的长度固定,集合长度可变(可以自动扩展)
2.数组只能通过下边访问 元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象)

集合框架的组成:
根接口
Collection:List  Queue  Set(集:无序不可重复)
Map:HashMap


Collection接口 名称:属性 实现类
List 序列:有序可重复 ArrayList\LinkedList
Queue 队列:有序可重复 LInkedList
Set 集:无序不可重复 HashSet
其中 ArrayList、HashSet、HashMap最为常用

Collection接口:
List接口:
    
List方法及实现
 
//新建list并且规定其泛型
 public static List<Course> coursesToSelect;
//测试list的添加方法
//list.add
// public void add(int index, Object element){}
//index添加的位置,element 添加的元素
 public void testAdd(){
        Course cr1=new Course("1","数据结构");
        coursesToSelect.add(cr1);
        Course temp= (Course) coursesToSelect.get(0);
       // System.out.println("添加课程:"+temp.name+"  编号为:"+temp.id+"  成功");
        Course cr2=new Course("2","c语言");
        coursesToSelect.add(0,cr2);
        Course temp2= (Course) coursesToSelect.get(0);
       // System.out.println("添加课程:"+temp2.name+"  编号为:"+temp2.id+"  成功");
        //数组只有俩个元素不能越界访问下下个元素
        /*Course cr3=new Course("3","网络安全");
        coursesToSelect.add(-1,cr3);*/
        /*coursesToSelect.add(cr1);
        Course temp0= (Course) coursesToSelect.get(2);
        System.out.println("添加课程:"+temp0.name+"  编号为:"+temp0.id+"  成功");
*/
     
     
//按数组添加到list,先定义数组,再使用addAll方法
        Course[] course={new Course("3","离散数学"),new Course("4","汇编语言")};
        coursesToSelect.addAll(Arrays.asList(course));
        Course temp3= (Course) coursesToSelect.get(2);
        Course temp4= (Course) coursesToSelect.get(3);
       // System.out.println("添加了俩门课程:"+temp3.name+"编号为:"+temp3.id+"  "+temp4.name+"编号为:"+temp4.id);
        Course[] course2={new Course("5","高等数学"),new Course("6","爬虫语言")};
        coursesToSelect.addAll(2,Arrays.asList(course2));
        Course temp5= (Course) coursesToSelect.get(2);
        Course temp6= (Course) coursesToSelect.get(3);
      //  System.out.println("添加了俩门课程:"+temp5.name+"编号为:"+temp5.id+"  "+temp6.name+"编号为:"+temp6.id);
    }
//在使用get方法时,返回的对象为object对象,需要进行转化
遍历List集合的三种方法:
 
//通过get方法for循环遍历
public void testGet(){
        System.out.println("——————————现有如下课程可选——————————");
        for (int  i=0;i<coursesToSelect.size();i++)
        {
            //使用了get方法获取的对象都为object类型
            Course c=(Course) coursesToSelect.get(i);
            System.out.println("课程名:  "+c.name+"  编号为: "+c.id);
        }
    }
    
   // 通过迭代器遍历List
     
    public void testIterator(){
        //新建一个迭代器
        Iterator it=coursesToSelect.iterator();
        //hasNext()检查是否有元素有返回true
        while (it.hasNext()){
            System.out.println("——————————现有如下课程可选(迭代器)——————————");
            for (int  i=0;i<coursesToSelect.size();i++)
            {
                //使用了get方法获取的对象都为object类型
                Course cr=(Course) it.next();
                System.out.println("课程名:  "+cr.name+"  编号为: "+cr.id);
            }
        }
    }
    
   // 通过foreach方法访问集合元素
    
    public void testForeach(){
        System.out.println("——————————现有如下课程可选(foreach)——————————");
        for (Object obj:coursesToSelect){
            Course cr=(Course) obj;
            System.out.println("课程名:  "+cr.name+"  编号为: "+cr.id);
        }
    }
List 修改数据和删除数据
 
//通过set方法修改元素 
public void testModify(){
        coursesToSelect.set(4,new Course("7","毛概"));
    }
//删除
//删除单个元素
    public void testRemove(){
        Course  cr= (Course) coursesToSelect.get(4);
        System.out.println("课程id为:"+cr.id+"名称为:"+cr.name);
        coursesToSelect.remove(cr);
        System.out.println("即将删除4上的元素");
        coursesToSelect.remove(4);
        
//删除多个元素
        
        System.out.println("即将删除4和5上的元素");
        Course[]courses={(Course) coursesToSelect.get(4), (Course) coursesToSelect.get(5)};
        coursesToSelect.removeAll(Arrays.asList(courses));
        System.out.println("成功删除课程");
    }
Map
 
//新建Map并且添加泛型
 public static Map<String,Student> students;
//添加数据使用put方法
students.put(ID,newStudent);
//使用keySet方法返回Map所有键的Set集合
 public void testKeySet(){
        Set<String>keySet=students.keySet();
        //取得students的容量
        System.out.println("总共有"+students.size()+"个学生");
        //遍历keySet对象,取得每一个键,在用get获取value
        for (String stuId:keySet){
            Student st=students.get(stuId);
            if (st!=null){
                System.out.println("学生:"+st.name+"id:"+st.id);
            }
        }
    }
删除Map中的映射
 
//使用remove方法通过key值删除
public void testRemove(){
            while (true){
                //提升删除学生id
                System.out.println("请输入要删除的学生id");
                //从键盘获取学生id
                Scanner console=new Scanner(System.in);
                String ID=console.next();
                Student st=students.get(ID);
                if (st==null){
                    //提示id不存在
                System.out.println("该id不存在");
                continue;
            }
            students.remove(ID);
                System.out.println("成功删除学生:"+st.name);
                break;
        }
    }
修改Map中的值
 
  public void testModify(){
        //请输入要修改的学生id
        System.out.println("请输入要修改的学生id");
        Scanner  console=new Scanner(System.in);
        while (true){
            String stuID=console.next();
            Student student=students.get(stuID);
            if (student==null){
                System.out.println("该id不存在");
                continue;
            }
            System.out.println("当前学生id,所对应的学生为:"+student.name);
            System.out.println("输入新的学生姓名");
            String name=console.next();
            Student newStudent=new Student(stuID,name);
            students.put(stuID,newStudent);
            System.out.println("修改成功");
            break;
        }
    }
遍历Map集合
 
//通过entrySet方法遍历Map
     
    public void testEntrySet(){
        //通过entrySet方法遍历Map
        Set<Map.Entry<String, Student>> entrySet=students.entrySet();
        for (Map.Entry<String, Student>entry:entrySet){
            System.out.print("id:"+entry.getKey());
            System.out.print("姓名:"+entry.getValue().name);
            System.out.println("  ");
        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_41657883/article/details/80888916