zoukankan      html  css  js  c++  java
  • 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());
            }
    
        }
    }
  • 相关阅读:
    linux常用命令(一)
    并发与高并发(十九) 高并发の消息队列思路
    鉴别web服务器的工具类
    并发与高并发(十八) 高并发之缓存思路
    记一次多线程下使用while出现的问题
    并发与高并发(十七)高并发之扩容思路
    并发与高并发(十六)多线程并发拓展
    并发与高并发(十五)线程池
    并发与高并发(十四)J.U.C组件拓展
    基于springboot实现Java阿里短信发送
  • 原文地址:https://www.cnblogs.com/obge/p/12511034.html
Copyright © 2011-2022 走看看