java ------------ 集合(四) Collections类

Collections 类是java 提供的一个集合操作工具类,

  它包含大量的静态方法,用于实现对集合元素的排序、查找和替换等操作。类似数值的Arrays类,

        与Collection 是不同的,Collections是集合的操作类,Collection 是集合接口

1、对集合元素排序与查找,替换

如果要实现一个类的对象进行整体排序,这个类要实现Comparable 接口,此接口强行对实现它的每个类的对象进行整体排序,称为自然排序,

累的compareTo() 方法称为它的自然比较方法,用于比较此对象与指定对象的顺序,如果对象小于、等于或大于指定对象,分别返回负整数,零或正整数

int compareTo(Object obj)  : 比较此对象比指定对象,小反负 整,等返 零,大返正整,参数obj  为要比较的指定对象 

package com.obge.model;

//目的实现元素之间可以比较大小

//实现 Comparable 接口
public class Student implements Comparable {
    private int number = 0;
    private String name = "";
    private String gender="";

    public Student() {
    }

    public Student(int number, String name, String gender) {
        this.number = number;
        this.name = name;
        this.gender = gender;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

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

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }   
    
    //重写compareTO 方法
    @Override
    public int compareTo(Object o) {
        Student student = (Student)o;
        //使用学号进行比较
        if(this.number==student.number){
            return 0; 
            //如果这个学生的学号大于 传入学生的学号
        }else if (this.number>student.number){
            return 1;
        }else {
            return -1;
        }
       
    }

    
    
}

元素之间可以比较大小后,才可以使用Collections 类的sort ()方法对元素进行排序。

List 接口是有序的,才可以进行排序,Map 接口不行哦

package com.obge.boge;

import com.obge.model.Student;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;

public class CollectionsStu {
    public static void main(String[] args) {
        Student student1 = new Student();
        student1.setNumber(1);
        Student student2 = new Student();
        student2.setNumber(7);
        Student student3 = new Student();
        student3.setNumber(2);
        Student student4 = new Student();
        student4.setNumber(11);
        // 弄个集合放student 对象
        ArrayList arrayList = new ArrayList();
        arrayList.add(student1);
        arrayList.add(student2);
        arrayList.add(student3);
        arrayList.add(student4);

        System.out.println("-------排序前---------");
        Iterator iterator = arrayList.iterator();
        while (iterator.hasNext()){
            Student stu = (Student) iterator.next();
            System.out.println(stu.getNumber());
        }
        System.out.println("-------排序后---------");
        //排序
        Collections.sort(arrayList);
        //遍历
        iterator = arrayList.iterator();
        while (iterator.hasNext()){
            Student stu = (Student) iterator.next();
            System.out.println(stu.getNumber());
        }

        //使用binarySearch 查找arrayList元素中某个元素对应索引    从0 开始,查找的是排序后的
        System.out.println("student2的索引是:"+Collections.binarySearch(arrayList,student2));

        //替换fill()   把集合中的所有元素替换为相同元素
        Collections.fill(arrayList,student1);
        iterator = arrayList.iterator();
        while (iterator.hasNext()){
            Student stu = (Student) iterator.next();
            System.out.println(stu.getNumber());
        }

    }
}

猜你喜欢

转载自www.cnblogs.com/obge/p/12511034.html