精华内容
下载资源
问答
  • Java中对对象数组进行排序
    2021-03-22 18:45:45

    可以使用java.util.Arrays.sort()方法对对象数组进行排序,并使用单个参数,即要排序的数组。演示此的程序如下所示-

    示例import java.util.Arrays;

    public class Demo {

    public static void main(String args[]) throws Exception {

    String str[] = new String[]{"apple","orange","mango","guava", "melon"};

    int n = str.length;

    System.out.println("The original array of strings is: ");

    for (int i = 0; i 

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

    }

    Arrays.sort(str);

    System.out.println("The sorted array of strings is: ");

    for (int i = 0; i 

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

    }

    }

    }

    输出结果

    字符串的原始数组是-apple

    orange

    mango

    guava

    melon

    The sorted array of strings is:

    apple

    guava

    mango

    melon

    orange

    现在让我们了解上面的程序。

    首先定义字符串数组str,然后使用for循环打印。演示这的代码片段如下-String str[] = new String[]{"apple","orange","mango","guava", "melon"};

    int n = str.length;

    System.out.println("The original array of strings is: ");

    for (int i = 0; i 

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

    }

    然后,使用Arrays.sort()方法对str进行排序。然后使用for循环显示结果排序后的字符串数组。演示这的代码片段如下-Arrays.sort(str);

    System.out.println("The sorted array of strings is: ");

    for (int i = 0; i 

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

    }

    更多相关内容
  • java 对象数组排序

    2020-09-03 18:23:12
    当遇到数组排序时,我们经常会使用学过的几种排序方法,而java 本身提供了Arrays.sort,在数据元素较少或者对效率要求不是抬高时,直接使用Arrays.sort来的更容易。查看一下源码后Arrays.sort 本身采用的是快速排序。
  • NULL 博文链接:https://pridesnow.iteye.com/blog/1453660
  • 小编典典你有两种方法可以使用Arrays...在对象所属的类中实现Comparable接口,并将数组传递给仅采用一个参数的sort方法。例class Book implements Comparable {public String name, id, author, publisher;public...

    小编典典

    你有两种方法可以使用Arrays实用程序类

    实现一个Comparator并将数组与比较器一起传递给sort方法,该方法将其作为第二个参数。

    在对象所属的类中实现Comparable接口,并将数组传递给仅采用一个参数的sort方法。

    class Book implements Comparable {

    public String name, id, author, publisher;

    public Book(String name, String id, String author, String publisher) {

    this.name = name;

    this.id = id;

    this.author = author;

    this.publisher = publisher;

    }

    public String toString() {

    return ("(" + name + ", " + id + ", " + author + ", " + publisher + ")");

    }

    @Override

    public int compareTo(Book o) {

    // usually toString should not be used,

    // instead one of the attributes or more in a comparator chain

    return toString().compareTo(o.toString());

    }

    }

    @Test

    public void sortBooks() {

    Book[] books = {

    new Book("foo", "1", "author1", "pub1"),

    new Book("bar", "2", "author2", "pub2")

    };

    // 1. sort using Comparable

    Arrays.sort(books);

    System.out.println(Arrays.asList(books));

    // 2. sort using comparator: sort by id

    Arrays.sort(books, new Comparator() {

    @Override

    public int compare(Book o1, Book o2) {

    return o1.id.compareTo(o2.id);

    }

    });

    System.out.println(Arrays.asList(books));

    }

    输出量

    [(bar, 2, author2, pub2), (foo, 1, author1, pub1)]

    [(foo, 1, author1, pub1), (bar, 2, author2, pub2)]

    2020-03-09

    展开全文
  • 鄙人也是初学java 新人小白一枚 道行浅 希望能给同道同学一些帮助!
  • Java如何对类对象数组排序

    千次阅读 2021-08-03 22:06:01
    用于基本数据类型的数组排序,用到的是Arrays类下的重载静态方法sort( ); 只需要调用sort方法就行,传入数组名为实参。 例如,对整型数组进行排序。 public class ArraysTest { public static void main...

            用于基本数据类型的数组排序,用到的是Arrays类下的重载静态方法sort( );

            只需要调用sort方法就行,传入数组名为实参。

    例如,对整型数组进行排序。

    
    public class ArraysTest {
    	
    	public static void main(String[]args) {
    		
    		int [] arr = new int[] {1,6,4,2,9,1,4};
    		
    		Arrays.sort(arr);
    		
    		System.out.println(Arrays.toString(arr)); //输出数组元素
    		
    		
    		
    	}
    }

            运行结果为:

            Arrays.toString()也是一个重载方法,传入数组名就回返回一个包含该数组所有元素的字符串。格式是:[a,b,c,d ] ; 

            使用Arrays.sort()进行排序,进行是升序排序。

    一、该类实现Comparable接口

            如果要对自定义类的对象数组进行排序呢。该类就需要实现Comparable接口,重写compareTo();在compareTo方法中需要表现出是对类的那个字段进行排序,并且可以升降排序

    下面对Person类举例,对其按age从大到小排序,如何age相等则按name从小到大排序。

    定义Person类

    
    public class Person implements Comparable<Person>{
    	
    	String name;
    	int age;
    	Person(){
    		
    	}
    	Person(String name ,int age){
    		this.name = name;
    		this.age = age;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getAge() {
    		return age;
    	}
    	public void setAge(int age) {
    		this.age = age;
    	}
    	@Override
    	public int compareTo(Person o) {
    		if(o.age==this.age) {
    			return this.name.compareTo(o.name);
    		}
    		return o.age-this.age;
    	}
    	
    	public String toString() {
    		
    		return "(姓名:"+name+",年龄"+age+")";
    	}
    }

            如何排序,按什么字段来排序,完全取决于compareTo()方法。对其所需排序的字段进行相减就可以实现按照该字段排序了,如果是字符串则需要调用字符串的compareTo()方法返回一个整型

            之所以要重写toString方法,是因为使用输出方法Arrays.toString(Object o)需要识别对象数组中的每一个元素所需要表示的含义。

    另外,当前Person类测试代码与上述整型数组排序代码在同一个main函数中,我不在想要去注释掉整型排序,之前学习了Junit工具,就使用了Junit工具来实现。

        @Test
    	public void testPerson() {
    		
    		Person [] p1 =new Person[] {
    			new Person("Ja",25),
    			new Person("Ai",17),
    			new Person("Aa",17),
    			new Person("Lo",32),
    			new Person("Hi",12),
    			
    		};
    		
    		Arrays.sort(p1);
    		System.out.println(Arrays.toString(p1));
    		
    	}

    输出结果为:

    二、例题:

    某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 55 名学生发奖学金。

    期末,每个学生都有 33 门课的成绩:语文、数学、英语。

    先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。

    任务:先根据输入的 33 门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前五名学生的学号和总分。

    注意,在前 55 名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。

    例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分) 是:

    7 279
    5 279
    

    这两行数据的含义是:总分最高的两个同学的学号依次是 77 号、55 号。

    这两名同学的总分都是 279279 (总分等于输入的语文、数学、英语三科成绩之和),但学号为 77 的学生语文成绩更高一些。

    如果你的前两名的输出数据是:

    5 279
    7 279
    

    则按输出错误处理。

    输入格式

    输入文件包含 n+1n+1 行:

    第 11 行为一个正整数 nn,表示该校参加评选的学生人数。

    第 22 到 n+1n+1 行,每行有 33 个用空格隔开的数字,每个数字都在 00 到 100100 之间,第 jj 行的 33 个数字依次表示学号为 j−1j−1 的学生的语文、数学、英语的成绩。

    每个学生的学号按照输入顺序编号为 1∼n1∼n (恰好是输入数据的行号减 11)。

    所给的数据都是正确的,不必检验。

    输出格式

    输出文件共有 55 行,每行是两个用空格隔开的正整数,依次表示前 55 名学生的学号和总分。

    数据范围

    6≤n≤3006≤n≤300

    输入样例:

    6
    90 67 80
    87 66 91
    78 89 91
    88 99 77
    67 89 64
    78 89 98
    

    输出样例:

    6 265
    4 264
    3 258
    2 244
    1 237

            根据上述的内容可以做。

            代码:

    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            Person [] ps = new Person[n];
            for(int i =0;i<n;i++){
                Person p = new Person(i+1,sc.nextInt(),sc.nextInt(),sc.nextInt());
                ps[i] = p;
            }
            Arrays.sort(ps);
            for(int i = 0;i<5;i++){
                System.out.println(ps[i]);
            }
        }
    }
    class Person implements  Comparable<Person>{
        int id ;
        public int y;
        int s;
        int e;
        public int sum ;
        public Person(int id, int y, int s, int e) {
            this.id = id;
            this.y = y;
            this.s = s;
            this.e = e;
            this.sum = y+s+e;
        }
    
    
    
        @Override
        public int compareTo(Person o) {
            if(this.sum==o.sum){
                if(this.y==o.y){
                    return this.id-o.id;
                }
                return o.y- this.y;
            }
            return o.sum-this.sum;
        }
    
        @Override
        public String toString() {
            return id +" "+sum;
        }
    }
    

    三、使用Arrays.sort(T[  ] a,Comparator<? super T> c)

            Person类不实现Comparable接口,在排序时重载compare方法就可。

            则上述可以改为:

        @Test
    	public void testPerson() {
    		
    		Person [] p1 =new Person[] {
    			new Person("Ja",25),
    			new Person("Ai",17),
    			new Person("Aa",17),
    			new Person("Lo",32),
    			new Person("Hi",12),
    			
    		};
    		
    		Arrays.sort(p1);
            Arrays.sort(p1, new Comparator<Person>() {
    
                @Override
                public int compare(Person o1, Logs o2) {
    
                    if (o1.age == o2.age) {
                        return o1.name.compareTo(o2.name);
                    }
                    return o2.age - o1.age;
                }
            });
    		System.out.println(Arrays.toString(p1));
    		
        }

    展开全文
  • Java对象数组按照其属性排序方法

    千次阅读 2018-11-14 23:17:04
    当我们有一组物品也就是一个对象数组时,我们会希望这组物品按照它的某个属性来排序 也就是需要对象数组按照其属性排序 一 类定义时实现Comparable接口,定义自身的比较算法。 要排序就要有比较的方法, 因为是...

    问题描述:

    开发时我们希望用一个类表示某种物品, 用其域来描述物品的特性, 

    当我们有一组物品也就是一个对象数组时,我们会希望这组物品按照它的某个属性来排序

    也就是需要对象数组按照其属性排序

    一 类定义时实现Comparable接口,定义自身的比较算法。

    要排序就要有比较的方法, 因为是自定义的类, 系统不知道怎么做两个自定义类的比较,

    所以我们要自己在类内写两个类的比较的方法,也就是告诉按照那个属性或者那种方式来给对象数组排序

    自定义比较算法也就是实现Comparable接口:(会自动生成需要自己写的方法如下图)

    补全类:

    public class Good implements Comparable<Good>
    {
    	String name;
    	int price;
    	public Good(String name,int price) 
    	{
    		this.name=name;
    		this.price=price;
    	}
    	@Override
    	public int compareTo(Good good) {
    		// TODO Auto-generated method stub
    		return this.price-good.price;
    	}
    	
    }

    调用Collections.sort(); 

    public static void main(String[] args) 
    	{
    		 ArrayList<Good> goods = new ArrayList<Good>();
    		 goods.add(new Good("二", 2));
    		 goods.add(new Good("三", 3));
    		 goods.add(new Good("一", 1));
    		 
    		 System.out.println("排序前:");
    	     for (Good good : goods)
    	         System.out.println("姓名:"+good.name+" 价格:"+good.price);
    	     
    	     Collections.sort(goods);
    	     
    	     System.out.println("排序后:");
    	     for (Good good : goods)
    	         System.out.println("姓名:"+good.name+" 价格:"+good.price);
    	}

     

    内容参考如下博主:

    https://blog.csdn.net/wangtaocsdn/article/details/71500500

    https://www.cnblogs.com/ygj0930/p/5950971.html

    展开全文
  • java 中 自定义对象数组排序 Arrays.sort()方法 以及 Compareable接口和Compartor接口对比分析 对自定义对象数组排序,需要引入“比较器”,的概念。 Compareable和Compartor接口就是比较器抽象接口,通过...
  • public List<Map<String,Object>> Sort(List<Map<String,Object>... //排序 Collections.sort(List, new Comparator<Map<String,Object>>() { @Override public .
  • 简单的Java对象数组进行排序

    千次阅读 2018-04-17 09:06:52
    比如要对一个对象进行排序,根据他的分数来进行排序,首先要是实现Comparable接口,实现compareTo方法。public class Person implements Comparable&lt;Person&gt;{ int score; String name; public ...
  • 如何按对象的字段之一(例如name或count对这个对象数组进行排序?Array([0] => stdClass Object([ID] => 1[name] => Mary Jane[count] => 420)[1] => stdClass Object([ID] => 2[name] => ...
  • Java对数组对象进行排序, Collections.sort(list
  • }有没有一种简单的排序方法Person[] ArrayOfPersons按年龄?我必须使用Comparable或Comparator吗?我不完全了解他们.解决方法:您可以在循环中使用吸气剂检查年龄for (int i = 0 ; i < persons.length - 1; i++) {...
  • java中对对象数组排序

    千次阅读 多人点赞 2019-06-27 13:52:04
    1. 我们在编写程序的时候有时候会遇到需要对当前的对象数组按照对象中的每一个属性来进行排序,这个时候就需要使用到我们的Arrays.sort()方法了,在方法中需要传入的第一个参数是需要排序对象数组,第二个参数是...
  • Java自定义数组排序

    千次阅读 2019-04-15 21:00:23
    import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.n...
  • Java数组排序Java sort()方法

    万次阅读 多人点赞 2019-07-05 23:03:19
    Java 中实现数组排序的方式很多,除了利用 Arrays 类的 sort() 方法外,还可以编写自定义方法来实现自己的排序算法。本文介绍如何使用 Arrays 类提供的 sort() 方法来对数组进行排序。 使用 java.util.Arrays 类...
  • Java对象数组按照某属性排序

    千次阅读 2020-10-15 15:58:19
    要排序就要有比较的方法, 因为是自定义的类, 系统不知道怎么做两个自定义类的比较,所以我们要自己在类内写两个类的比较的方法,也就是告诉按照那个属性或者那种方式来给对象数组排序,自定义比较算法也就是实现...
  • java数组如何排序

    千次阅读 2021-02-12 09:53:22
    java中几种数组排序的方法:1、使用Arrays.sort()排序Arrays.sort()排序方法java中是最简单且最常用的排序方法。int []arr1= {45,34,59,55};Arrays.sort(arr1);//调用方法排序即可Arrays.sort()的使用主要分为对...
  • java对象数组去重排序

    千次阅读 2018-02-07 18:25:39
     在对象中重写equals和hashCode方法: @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ShippingCostVo
  • Java数组排序

    千次阅读 2021-02-26 21:24:19
    当然可以自己编写合适的排序方法,但既然java包里有自带的Arrays.sort排序方法,在 数组元素比较少的时候为何不用?Sorting an Array 1. 数字排序 int[] intArray = new int[] { 4, 1, 3, -23 };Arrays.sort...
  • 以Employee为例,实现对象数组Employee[] ...一个对象数组若要使用Arrays.sort(Object[] objects)方法排序,那么该对象类需要实现comparable接口 public class Employee implements Comparable<Employee>...
  • 小编这里不多赘言,直接举个栗子。... //定义Product对象的参数为名称和价格 data[0] = new Product("iphone", 10800); data[0] = new Product("vivo", 3589); data[0] = new Product("oppo", 4099); data[0]...
  • java四种数组排序

    千次阅读 2021-02-13 00:46:16
    数组的四种排序1.快速排序法Arrays.sort();用法1.sort(byte[] a)对指定的 byte 型数组按数字升序进行排序。sort(byte[] a, int fromIndex, int toIndex)对指定 byte 型数组的指定范围按数字升序进行排序。sort(char...
  • 下面小编就为大家带来一篇浅谈对象数组或list排序及Collections排序原理。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • java数组排序函数

    千次阅读 2020-06-08 16:20:14
    排序算法,基本的高级语言都有一些提供。C语言有qsort()函数,C++有sort()函数,java语言有Arrays类(不是Array)。...Java API对Arrays类的说明是:此类包含用来操作数组(比如排序和搜索)的各种方法
  • 最近遇到了一道多条件排序题,类似于“something有A,B,C三个属性,先比较A,A条件相同时再比较B,B条件相同时再比较C,排序输出”的形式。这类题目用C/C++解决起来会很顺手,可以用结构体,结合sort和compare,就能...
  • 在C、C++中有很多排序算法,但是通常排序算法不得不让程序员在写代码的过程中陷入对底层很多指针和位置的理解,java不希望这样,所以排序大多可以由java帮你做掉,例如,你要对一个数组排序,通过:Collections.sort...
  • java的学习笔记(资料来源自尚硅谷)简介附上代码代码过程如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片 简介 本文主要目的是编写一个StudenTest对象,实现一下几个功能: 创建20个学生对象,学号为1到...
  • 反转排序的意思就是用相反的顺序输出原来的数组内容。 实现步骤: 将第一个与最后一个替换,第二个与倒数第二个替换,以此类推。 具体代码如下: public class xunlian { public static void main(String[] ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 208,654
精华内容 83,461
关键字:

java对象数组排序方法

java 订阅