java Collections Arrays ArrayList 类的运用 进行对象排序

简介:    /*  Collections类的所有方法都是静态的 sort方法 可以为一个列表进行排序   List 接口从 Collection派生来的  ArrayList类实现了  List接口 所以有iterator方法  Arrays类的sort方法是给一个数组进行排序  ...
 

 /*
 Collections类的所有方法都是静态的 sort方法 可以为一个列表进行排序 
 List 接口从 Collection派生来的  ArrayList类实现了  List接口 所以有iterator方法
 Arrays类的sort方法是给一个数组进行排序
 Collections类封装了静态方法 对列表操作

Arrays 类可以对数组进行排序等等
 */
 import java.util.*;
 class  Test 
{  
 
  public static void  printElements(Collection c)  //用迭代器的形式输出每个元素
 {
   Iterator i= c.iterator();
   while(i.hasNext())
   System.out.println(i.next());
 
 }
 public  static  void main(String []args)
 {
  //插入Point
  ArrayList<Point>  arr1 =new ArrayList<Point>() ;
  Point p1=new Point(1,3);
  Point p2=new Point(2,7);
  Point p3=new Point(9,6);
  Point p4=new Point(4,3);
  arr1.add(p1);
  arr1.add(p2);
  arr1.add(p3);
  arr1.add(p4);
  printElements(arr1); //输出元素    
  
  
  //插入Student
   ArrayList<Student>  arr2=new ArrayList<Student>() ;
  Student s1=new Student(1,"xiaozhang"); 
  Student s2=new Student(3,"xiaoli"); 
  Student s3=new Student(2,"xiaowang"); 
   Student s4=new Student(2,"xa"); 
  arr2.add(s2);
  arr2.add(s1);
   arr2.add(s3);
   arr2.add(s4);
   // Collections.sort(arr2);  //利用Collection类的静态方法 sort进行列表的排序 
   //我们还可以定义自己的比较器 这个比较器从 Comparator接口 实现
   
  Collections.sort(arr2, Collections.reverseOrder());// Collections.reverseOrder() 函数直接返回一个反序 比较器对象  Comparator
   printElements(arr2); //输出反序排序元素      
 
 
  System.out.println("max= "+Collections.max(arr2));  //通过静态方法获得最大值
  System.out.println("min= "+Collections.min(arr2));  //通过静态方法获得最小值    
  
  
  
  
  
 }
}
class Point
{
 int  x,y;
 Point(int x,int y)
 {
  this.x=x;
  this.y=y;
 }
 public  String toString()
 {
  return "x="+x+",y="+y;
 }
}


class   Student   implements Comparable
{
 int num;
 String name;
 Student(int num,String name)
 {
  this.num=num;
  this.name=name; 
 }
 public  String toString()
 {
  return num+":"+name;
 }
 
 public int compareTo(Object o)
 {
  Student s=(Student)o;
  return num>s.num?1:(num==s.num?0:-1);
 }
 
 
 //比较器类
 static  class  StudentComparator  implements  Comparator   //内部类 比较器
 {
  public int compare(Object o1, Object o2) 
  {
   Student s1=(Student)o1;
   Student s2=(Student)o2;
    int num=s1.num>s2.num?1:(s1.num==s2.num?0:-1) ;
   if(num==0)
   {
    return s1.name.compareTo(s2.name);
   }
   
   return  num;
  }
 }
 

}

目录
相关文章
|
16天前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
170 0
|
22天前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
75 4
|
27天前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
123 5
|
30天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
99 1
|
30天前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
157 1
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
172 7
|
12月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
519 58
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
228 3
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
187 2
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
292 1