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;
  }
 }
 

}

目录
相关文章
|
11月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
1180 157
|
11月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
487 4
|
缓存 Java 开发者
Java 开发者必看!ArrayList 和 LinkedList 的性能厮杀:选错一次,代码慢成蜗牛
本文深入解析了 Java 中 ArrayList 和 LinkedList 的性能差异,揭示了它们在不同操作下的表现。通过对比随机访问、插入、删除等操作的效率,指出 ArrayList 在多数场景下更高效,而 LinkedList 仅在特定情况下表现优异。文章强调选择合适容器对程序性能的重要性,并提供了实用的选择法则。
530 3
|
Java 索引
Java ArrayList中的常见删除操作及方法详解。
通过这些方法,Java `ArrayList` 提供了灵活而强大的操作来处理元素的移除,这些方法能够满足不同场景下的需求。
861 30
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
存储 人工智能 JavaScript
Java从作用域到对象高级应用​
本内容详细讲解了JavaScript中的作用域类型(函数作用域、块作用域、全局作用域)、作用域链、垃圾回收机制、闭包、变量提升、函数参数、数组方法、内置构造函数、对象高级知识、原型链、对象赋值、深浅拷贝、递归、异常处理及this指向等内容,全面覆盖JS核心概念与编程技巧。
173 0
|
存储 Java
Java对象的内存布局
在HotSpot虚拟机中,Java对象的内存布局分为三部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头包含Mark Word、Class对象指针及数组长度;实例数据存储对象的实际字段内容;对齐填充用于确保对象大小为8字节的整数倍。
279 0
|
存储 Java
Java的对象和类的相同之处和不同之处
在 Java 中,对象和类是面向对象编程的核心。
347 19
|
存储 Java
Java编程中的对象和类
【8月更文挑战第55天】在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
207 10
|
Java
Java 对象和类
在Java中,**类**(Class)和**对象**(Object)是面向对象编程的基础。类是创建对象的模板,定义了属性和方法;对象是类的实例,通过`new`关键字创建,具有类定义的属性和行为。例如,`Animal`类定义了`name`和`age`属性及`eat()`、`sleep()`方法;通过`new Animal()`创建的`myAnimal`对象即可调用这些方法。面向对象编程通过类和对象模拟现实世界的实体及其关系,实现问题的结构化解决。
238 4