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包中
![](http://img.blog.csdn.net/20131025102630156)
public static void main(String args[]){ Comparable com = null ; // 声明一个Comparable接口对象 com = 30 ; // 通过Integer为Comparable实例化 System.out.println("内容为:" + com) ; // 调用的是toString()方法 };
4、Comparator比较器![](http://img.blog.csdn.net/20131025103435000)
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。我们一个一个来讲解。 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可。因为使用起来真的太简单。篇幅太长也不好。
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。我们一个一个来讲解。 本来写好了每一种方法的测试代码,后来又给删了,因为我觉得如果想要去了解的话,可以直接查看这些常用的即可。因为使用起来真的太简单。篇幅太长也不好。
相关文章
- java基础知识回顾之java Thread类学习(八)--java多线程通信等待唤醒机制经典应用(生产者消费者)
- Java类集--认识类集、Collection接口
- Java常用类库--定时调度(Timer、TimerTask)
- Java常用类库--对象克隆技术clone
- Java常用类库--Runtime类
- Java多线程--线程常用操作方法
- Java面向对象高级--继承的应用----整形数组类、排序类、反转类
- 用命令行编译java并生成可执行的jar包
- java中的深浅克隆
- Java 第十一届 蓝桥杯 省模拟赛 反倍数
- Java实现 蓝桥杯 算法提高 三进制数位和
- Java实现 蓝桥杯 算法训练 约数个数
- 告别无止境的增删改查--Java代码生成器
- 编写高质量代码:改善Java程序的151个建议 --[36~51]
- Java -- JDBC_利用反射及 JDBC 元数据编写通用的查询方法
- RocketMQ:一个纯java的开源消息中间件--开发测试环境搭建
- 【JAVA】基于MVC架构Java技术荟萃案例演练
- java struts2入门学习--OGNL语言常用符号和常用标签学习
- 【总结】java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格
- atitit. 集合groupby 的实现(2)---自定义linq查询--java .net php
- 1小时学会通过Java Swing Design设计java图形化
- PySpark 的背后原理--在Driver端,通过Py4j实现在Python中调用Java的方法.pyspark.executor 端一个Executor上同时运行多少个Task,就会有多少个对应的pyspark.worker进程。
- Java释出的时候,AWT作为Java最弱的组件受到不小的批评
- 【java】Lambda表达式
- 【java】Java并发编程--Java实现多线程的4种方式
- 【java】Spring Boot --40 个 Spring Boot 常用注解(建议收藏)
- 【Java数组】一维数组、二维数组、冒泡排序、直接选择排序、反转排序