Java 集合知识复习

Java集合类

集合类是Java数据结构的实现类,Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。

集合的分类

1. Collection 包含了集合的基本操作和抽象接口
1.1 List
是一个有序的队列, 插入顺序 实现类有4个:LinkedList, ArrayList, Vector, Stack。
ArrayList 优点: 查询快 缺点:插入删除慢 线程不安全
LinkedList 双向链表形式 插入删除快 查询慢 线程不安全
Vector 线程安全 但性能比较慢 现在基本不用

1.2 Set
不能存在相同的对象,无序的,就是数学意义上的集合。具体实现类有HashSet,LinkedHashSet,TreeSet等
HashSet 无序 不能保证元素的顺序,元素不能重复。元素可以为null。底层是一个数组,但是元素的位置和元素的取值不存在确定的关系,而是将元素进行Hash运算之后的位置。这样做是为了增加查询的速度。index = hash(value)。不是线程安全
LinkedHashSet 插入顺序 不能重复
2. Map 一个映射接口,即key-value键值对
无序的 以键值对的形式存放对象。key-value。一般是key为String类型,value为Object的类型。具体实现类有HashMap,LinkedHashMap,TreeMap等。
3. Iterator 它是遍历集合的工具,即我们通常通过Iterator迭代器来遍历集合
在这里插入图片描述

对实体类的排序

1.让实体类实现Comparable接口
2.在compareTo方法里面对需要排序的元素进行比较
3.将实体类存入集合 并排序

public class Student implements Comparable<Student> {
    private String name;
    private String age;
    private String score;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getScore() {
        return score;
    }

    public void setScore(String score) {
        this.score = score;
    }

    @Override
    public int compareTo(Student o) {
//        if ((Integer.parseInt(score) - Integer.parseInt(o.score)) > 0) {
//            return -1;
//        } else if ((Integer.parseInt(score) - Integer.parseInt(o.score)) <= 0) {
//            return 1;
//        }else{
//          return 0;
//        }
        return this.name.compareTo(o.name);
    }
}
Student student = new Student();
student.setName("张三");
student.setAge("24");
student.setScore("86");

Student student1 = new Student();
student1.setName("李四");
student1.setAge("28");
student1.setScore("72");

Student student2 = new Student();
student2.setName("王五");
student2.setAge("16");
student2.setScore("90");

Student student3 = new Student();
student3.setName("zl");
student3.setAge("18");
student3.setScore("76");

ArrayList<Student> list=new ArrayList<Student>();
list.add(student);
list.add(student1);
list.add(student2);
list.add(student3);
System.out.println("排序前===");
for (Student s1 : list) {
    System.out.println(s1.getName());
}
System.out.println("排序后===");
Collections.sort(list);
for (Student s2 : list) {
    System.out.println(s2.getName());
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值