Collection集合系列的List集合和Set集合

List集合:有序 可重复 有索引

ArrayList集合常用方法
public static void main(String[] args) {
        //创建一个ArrayList集合
        //List集合 有序 可重复 有索引
        List<String> list = new ArrayList<>();
        list.add("java");
        list.add("java");
        list.add("MySql");
        list.add("MySql");

        //2.在某个索引位置插入元素
        list.add(3,"你好");
        System.out.println(list);
        //3.根据索引删除元素 ,返回被删除的值
        list.remove(2);
        System.out.println(list);

        //4.根据索引获取元素
        System.out.println(list.get(3));
        //修改索引处位置的元素
        System.out.println(list.set(2, "python"));
        System.out.println(list);
    }
LinkedList常用方法
  public static void main(String[] args) {
        //创建一个LinkedList集合
        LinkedList list = new LinkedList();
        //向集合中添加元素
        list.add("爱");
        list.add("中国");
        System.out.println(list);
        //在集合第一个位置处添加元素
        list.addFirst("我");
//        list.push("我");//同addFirst效果一样
        System.out.println(list);
        //在集合最后一个位置处添加元素
        list.addLast("~~~");
        System.out.println(list);
        //返回集合中第一个元素
        System.out.println(list.getFirst());
        //返回集合中最后一个元素
        System.out.println(list.getLast());
        //删除集合中第一个元素
        list.removeFirst();
//        list.pop();//同removeFirst效果一样
        System.out.println(list);
        //删除集合中最后一个元素
        list.removeLast();
        System.out.println(list);
    }

Set集合:

HashSet集合:

特点:HashSet 无序 不重复 无索引 根据哈希表的算法来判断是否重复,需要重写equals方法和hashcode方法

创建一个学生类:

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name) && Objects.equals(sex, student.sex);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age, sex);
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    private String sex;
}

判断学生类HashSet集合是否重复

 public static void main(String[] args) {
        //HashSet 无序 不重复 无索引 根据哈希表的算法来判断是否重复,需要重写equals方法和hashcode方法
        Set<Student> sets = new HashSet<>();
        Student s1 = new Student("张三",18,"男");
        Student s2 = new Student("张三",18,"男");
        Student s3 = new Student("李四",20,"男");
        sets.add(s1);
        sets.add(s2);
        sets.add(s3);
        System.out.println(sets);
    }

输出结果:[Student{name='李四', age=20, sex='男'}, Student{name='张三', age=18, sex='男'}]

LinkedSet集合:

特点:LinkedSet 有序 不重复 无索引

//LinkedSet 有序 不重复 无索引
    public static void main(String[] args) {
        Set<String> sets = new LinkedHashSet<>();
        sets.add("java");
        sets.add("java");
        sets.add("MySql");
        sets.add("MySql");
        sets.add("go");
        sets.add("python");
        sets.add("C++");
        sets.add("HTML");
        sets.add("SpringBoot");
        sets.add("Mybatis");

        System.out.println(sets);
    }
TreeSet集合:

特点:TreeSet集合 可排序 不重复 无索引

创建一个苹果类:

public class Apple  implements Comparable<Apple>{
    private String name;
    private String color;
    private double price;
    private int weight;

    public int getWeight() {
        return weight;
    }

    public Apple(String name, String color, double price, int weight) {
        this.name = name;
        this.color = color;
        this.price = price;
        this.weight = weight;
    }

    public void setWeight(int weight) {
        this.weight = weight;
    }

    public Apple() {
    }

    public Apple(String name, String color, double price) {
        this.name = name;
        this.color = color;
        this.price = price;
    }


    @Override
    public String toString() {
        return "Apple{" +
                "name='" + name + '\'' +
                ", color='" + color + '\'' +
                ", price=" + price +
                ", weight=" + weight +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

//第一种排序方式:实现Comparable接口重写compareTo方法定义规则
    @Override
    public int compareTo(Apple o) {
        //自定义按照重量排序
        return this.weight - o.weight;
    }
}

排序方式:两种方式自定义排序规则
1.实现Comparable接口重写compareTo方法定义规则
2.集合自带比较器对象进行规则定制

public static void main(String[] args) {
        Set<Apple> sets = new TreeSet<>(new Comparator<Apple>() {
             //第二种方式排序,集合自带比较器对象进行规则定制
            @Override
            public int compare(Apple o1, Apple o2) {
//                //自定义按照价格升序
//                return Double.compare(o1.getPrice() , o2.getPrice());

                //自定义按照价格降序
                return Double.compare(o2.getPrice() , o1.getPrice());
            }
        });

        Apple a1 = new Apple("红苹果","红色",10.9,500);
        Apple a2 = new Apple("绿苹果","绿色",9.9,400);
        Apple a3 = new Apple("黄苹果","黄色",11.9,300);

        sets.add(a1);
        sets.add(a2);
        sets.add(a3);
        System.out.println(sets);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值