java集合

来源:互联网 发布:消防工程师题库软件 编辑:程序博客网 时间:2024/05/17 07:47

一、集合与数组的关系
数组是大小固定的,并且同一个数组只能存放类型一样的数据,基本类型或者是引用类型,而java集合可以存储和操作数目不固定的一组数据,所有的java集合都位于java.util包中,java 集合只能存放引用类型的数据,不能存放基本数据类型。
二、集合框架包含的内容
接口:Collection、Map
关系图
这里写图片描述
Collection接口的特点:存储一组不唯一、无序的对象;
List接口:存储一组不唯一、有序的对象;
Set接口:存储一组唯一、无序的对象;
ArrayList与LinkedList:
用法基本相同,LinkedList比ArrayList多了一对first和last属性,用于add、get和remove。如果是查询多用ArrayList,增加和删除多用LinkedList。

    //创建企鹅信息        Penguins penguins0=new Penguins("小白","男");        Penguins penguins1=new Penguins("美美","男");        Penguins penguins2=new Penguins("小北","男");        Penguins penguins3=new Penguins("小白","男");        ArrayList<Penguins> penguins=new ArrayList<>();        penguins.add(penguins0);        penguins.add(penguins1);        penguins.add(penguins2);        penguins.add(penguins3);        System.out.println("共有"+penguins.size()+"只企鹅");        for (Penguins penguins4:penguins) {            System.out.println(penguins4.getName()+" "+penguins4.getSex());        }        //删除        penguins.remove(penguins0);        System.out.println("删除后还有"+penguins.size()+"只企鹅");        System.out.println("分别是");        for (Penguins penguins4:penguins) {            System.out.println(penguins4.getName()+" "+penguins4.getSex());        }        //是否包含        if (penguins.contains(penguins2)) {            System.out.println("集合中包含");        }

HashSet和treeSet
与list的用法基本相似,只是不能重复添加对象,且没有下标值。如果属性相同,对象名不同,仍能添加并显示信息。
TreeSet可以给Set集合中的元素进行指定方式的排序。存储的对象必须实现Comparable接口。
使用TreeSet时,类中要有Comparable接口;
例如
这里写图片描述

测试类public static void main(String[] args) {        // TODO Auto-generated method stub        Student stu1=new Student(11,"金时");        Student stu2=new Student(10,"银时");        Student stu3=new Student(13,"神乐");        Student stu4=new Student(16,"新八");        Set<Student> students=new TreeSet<>();        students.add(stu1);        students.add(stu2);        students.add(stu3);        System.out.println("共有"+students.size()+"个同学");        for (Student student : students) {            System.out.println(student.getStudentNo()+" "+student.getName());        }        if (students.contains(stu2)) {            students.remove(stu2);        }        System.out.println("共有"+students.size()+"个同学");        for (Student student : students) {            System.out.println(student.getStudentNo()+" "+student.getName());        }        if (students.contains(stu3)) {            System.out.println(stu3.getName());        }    }

Map接口
HashMap特点:
通常存入的是一对数据,Map<k,v>,K就是你指定的关键词,通过key值就能找到value。
HashMap不可重复添加对象,无下标值,且key值是唯一不可重复的。
HashMap比ArrayList更方便查找。
Map接口常用的方法
这里写图片描述
例如:

        Student stu1=new Student(11,"金时");        Student stu2=new Student(10,"银时");        Student stu3=new Student(13,"神乐");        Student stu4=new Student(16,"新八");        //创建泛型集合        Map<Integer, Student> stus=new HashMap<>();        //增加信息        stus.put(stu1.getStudentNo(), stu1);        stus.put(stu2.getStudentNo(), stu2);        stus.put(stu3.getStudentNo(), stu3);        stus.put(stu4.getStudentNo(), stu4);        System.out.println("共有"+stus.size()+"位同学");        //获取        Student student=stus.get(10);        System.out.println(student.getStudentNo()+" "+student.getName());        //删除        stus.remove(13);        System.out.println("共有"+stus.size()+"位同学");        if (stus.containsKey(16)) {            System.out.println(stus.get(16).getName());        }

Map中的循环
1.增强for循环
遍历所有的key值

//获取map 里的key值        Set<Integer> keys=stus.keySet();        for (Integer key : keys) {            System.out.println(key);            System.out.println(stus.get(key).getName());        }

遍历所有的value值

//获取map里所有value值        Collection<Student> values=stus.values();        for (Student stud : values) {            System.out.println(stud.getStudentNo()+" "+stud.getName());        }

2.迭代器Iterator实现循环

//获取map 里的key值        Set<Integer> keys=stus.keySet();        Iterator<Integer> it=keys.iterator();        while (it.hasNext()) {            Integer key=it.next();            System.out.println(key);        }
//获取map里所有value值Collection<Student> values=stus.values();        Iterator<Student> its=values.iterator();        while(its.hasNext()){            Student student1=its.next();            System.out.println(student1.getStudentNo()+" "+student1.getName());        }

集合类的对比
这里写图片描述

原创粉丝点击