java集合

一、集合与数组的关系
数组是大小固定的,并且同一个数组只能存放类型一样的数据,基本类型或者是引用类型,而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());
        }

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值