zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java常用类库--Arrays、比较器(comparable、Comparator)

JAVA -- 常用 比较 类库 Arrays Comparator Comparable
2023-09-14 08:57:16 时间
p Arrays表示数组的操作类,直接定义在java.util包中 /p p img src= http://img.blog.csdn.net/20131025094203375 alt= br /p p /p pre name= code >Arrays表示数组的操作类,直接定义在java.util包中


import java.util.* ;

public class ArraysDemo{

 public static void main(String arg[]){

 int temp[] = {3,4,5,7,9,1,2,6,8} ; // 声明一个整型数组

 Arrays.sort(temp) ; // 进行排序的操作

 System.out.print("排序后的数组:") ;

 System.out.println(Arrays.toString(temp)) ; // 以字符串输出数组

 // 如果要想使用二分法查询的话,则必须是排序之后的数组

 int point = Arrays.binarySearch(temp,3) ; // 检索位置

 System.out.println("元素‘3’的位置在:" + point) ;

 Arrays.fill(temp,3) ;// 填充数组

 System.out.print("数组填充:") ;

 System.out.println(Arrays.toString(temp)) ;

};
2、Comparable接口的作用

class Student implements Comparable Student { // 指定类型为Student

 private String name ;

 private int age ;

 private float score ;

 public Student(String name,int age,float score){

 this.name = name ;

 this.age = age ;

 this.score = score ;

 public String toString(){

 return name + "\t\t" + this.age + "\t\t" + this.score ;

 public int compareTo(Student stu){ // 覆写compareTo()方法,实现排序规则的应用

 if(this.score stu.score){

 return -1 ;

 }else if(this.score stu.score){

 return 1 ;

 }else{

 if(this.age stu.age){

 return 1 ;

 }else if(this.age stu.age){

 return -1 ;

 }else{

 return 0 ;

public class ComparableDemo01{

 public static void main(String args[]){

 Student stu[] = {new Student("张三",20,90.0f),

 new Student("李四",22,90.0f),new Student("王五",20,99.0f),

 new Student("赵六",20,70.0f),new Student("孙七",22,100.0f)} ;

 java.util.Arrays.sort(stu) ; // 进行排序操作

 for(int i=0;i stu.length;i++){ // 循环输出数组中的内容

 System.out.println(stu[i]) ;

};

public static void main(String args[]){ Comparable com = null ; // 声明一个Comparable接口对象 com = 30 ; // 通过Integer为Comparable实例化 System.out.println("内容为:" + com) ; // 调用的是toString()方法 };
class BinaryTree{

 class Node{ // 声明一个节点类

 private Comparable data ; // 保存具体的内容

 private Node left ; // 保存左子树

 private Node right ; // 保存右子树

 public Node(Comparable data){

 this.data = data ;

 public void addNode(Node newNode){

 // 确定是放在左子树还是右子树

 if(newNode.data.compareTo(this.data) 0){ // 内容小,放在左子树

 if(this.left==null){

 this.left = newNode ; // 直接将新的节点设置成左子树

 }else{

 this.left.addNode(newNode) ; // 继续向下判断

 if(newNode.data.compareTo(this.data) =0){ // 放在右子树

 if(this.right==null){

 this.right = newNode ; // 没有右子树则将此节点设置成右子树

 }else{

 this.right.addNode(newNode) ; // 继续向下判断

 public void printNode(){ // 输出的时候采用中序遍历

 if(this.left!=null){

 this.left.printNode() ; // 输出左子树

 System.out.print(this.data + "\t") ;

 if(this.right!=null){

 this.right.printNode() ;

 private Node root ; // 根元素

 public void add(Comparable data){ // 加入元素

 Node newNode = new Node(data) ; // 定义新的节点

 if(root==null){ // 没有根节点

 root = newNode ; // 第一个元素作为根节点

 }else{

 root.addNode(newNode) ; // 确定是放在左子树还是放在右子树

 public void print(){

 this.root.printNode() ; // 通过根节点输出

public class ComparableDemo03{

 public static void main(String args[]){

 BinaryTree bt = new BinaryTree() ;

 bt.add(8) ;

 bt.add(3) ;

 bt.add(3) ;

 bt.add(10) ;

 bt.add(9) ;

 bt.add(1) ;

 bt.add(5) ;

 bt.add(5) ;

 System.out.println("排序之后的结果:") ;

 bt.print() ;

};

4、Comparator比较器

class StudentComparator implements Comparator Student { // 实现比较器 // 因为Object类中本身已经有了equals()方法 public int compare(Student s1,Student s2){ if(s1.equals(s2)){ return 0 ; }else if(s1.getAge() s2.getAge()){ // 按年龄比较 return 1 ; }else{ return -1 ; public class ComparatorDemo{ public static void main(String args[]){ Student stu[] = {new Student("张三",20), new Student("李四",22),new Student("王五",20), new Student("赵六",20),new Student("孙七",22)} ; java.util.Arrays.sort(stu,new StudentComparator()) ; // 进行排序操作 for(int i=0;i stu.length;i++){ // 循环输出数组中的内容 System.out.println(stu[i]) ; };



Java | 数组工具类Arrays、数学工具类Math 的详细介绍 本文主要详细的介绍了 数组工具类Arrays的相关方法和数学工具类Math的相关方法。通过代码举例,带你更快的理解这两个工具类。
Java中Arrays类中的数组操作方法详解 为什么要在fill方法中加空格:因为不加空格就会使他执行不正确,无法达到效果 为什么要输出内存空间吗:如果在同一个内存空间,一个数组改变之后另一个也会随之改变,会影响后续程序执行 copyOfRange方法如果超出索引最大限度会怎么样:如果超出,则超出部分默认为0! 为什么有些要方法要创建新数组有些不用:因为有些方法是对一个数组进行改变,有些是要重新创建数组!
java中的两种排序工具Arrays和Collections的使用 java中的排序工具主要是有两个Arrays和Collections。我们一个一个来讲解。 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可。因为使用起来真的太简单。篇幅太长也不好。