Java数组排序Arrays.sort

有的时候需要对数组里的element进行排序。

当然可以自己编写合适的排序方法,

但既然java包里有自带的Arrays.sort排序方法,在数组元素比较少的时候为何不用!

运用Arrays.sort(..)方法对数据进行排序,真的很快
* 减少了程序员自己写代码
* 并且效率非常高
* 这种排序可以排序所有数值型,包括char
* 并且可以从指定排序的下标范围:Arrays.sort(Array,3,6)

  Sorting an Array 

1. 数字排序(默认的应该是从小到大排序)  int[] intArray = new int[] { 4, 1, 3, -23 };

  Arrays.sort(intArray);

  输出: [-23, 1, 3, 4]

  2. 字符串排序,先大写后小写 String[] strArray = new String[] { "z", "a", "C" };

  Arrays.sort(strArray);

  输出: [C, a, z]

  3. 严格按字母表顺序排序,也就是忽略大小写排序 Case-insensitive sort

  Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

  输出: [a, C, z]

  4. 反向排序, Reverse-order sort

  Arrays.sort(strArray, Collections.reverseOrder());

  输出:[z, a, C]

  5. 忽略大小写反向排序 Case-insensitive reverse-order sort

  Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

  Collections.reverse(Arrays.asList(strArray));

  输出: [z, C, a]

  java初学者最常见的错误思想,就是试图去写一些方法来完成数组的排序功能,其实,数组排序功能,在java的api里面早已实现,我们没有必要去重复制造轮子。

  Arrays类有一个静态方法sort,利用这个方法我们可以传入我们要排序的数组进去排序,因为我们传入的是一个数组的引用,所以排序完成的结果也通过这个引用的来更改数组.对于整数、字符串排序,jdk提供了默认的实现,如果要对一个对象数组排序,则要自己实现java.util.Comparator接口。

  package demo1.client;

  import java.util.Arrays;

  import java.util.Comparator;

  public class ArraySortDemo {

  public void sortIntArray() {

  int[] arrayToSort = new int[] { 48, 5, 89, 80, 81, 23, 45, 16, 2 };

  System.out.println("排序前");

  for (int i = 0; i < arrayToSort.length; i++)

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

  // 调用数组的静态排序方法sort

  Arrays.sort(arrayToSort);

  System.out.println("排序后");

  for (int i = 0; i < arrayToSort.length; i++)

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

  }

  public void sortStringArray() {

  String[] arrayToSort = new String[] { "Oscar", "Charlie", "Ryan",

  "Adam", "David" };

  System.out.println("排序前");

  for (int i = 0; i < arrayToSort.length; i++)

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

  System.out.println("排序后");

  //调用数组的静态排序方法sort

  Arrays.sort(arrayToSort);

  for (int i = 0; i < arrayToSort.length; i++)

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

  }

  public void sortObjectArray() {

  Dog o1 = new Dog("dog1", 1);

  Dog o2 = new Dog("dog2", 4);

  Dog o3 = new Dog("dog3", 5);

  Dog o4 = new Dog("dog4", 2);

  Dog o5 = new Dog("dog5", 3);

  Dog[] dogs = new Dog[] { o1, o2, o3, o4, o5 };

  System.out.println("排序前");

  for (int i = 0; i < dogs.length; i++) {

  Dog dog = dogs[i];

  System.out.println(dog.getName());

  }

  Arrays.sort(dogs, new ByWeightComparator());

  System.out.println("排序后:");

  for (int i = 0; i < dogs.length; i++) {

  Dog dog = dogs[i];

  System.out.println(dog.getName());

  }

  }

  public static void main(String[] args) {

  ArraySortDemo t = new ArraySortDemo();

  t.sortIntArray();

  t.sortStringArray();

  t.sortObjectArray();

  }

  }

  class Dog {

  private String name;

  private int weight;

  public Dog(String name, int weight) {

  this.setName(name);

  this.weight = weight;

  }

  public int getWeight() {

  return weight;

  }

  public void setWeight(int weight) {

  this.weight = weight;

  }

  public void setName(String name) {

  this.name = name;

  }

  public String getName() {

  return name;

  }

  }

  class ByWeightComparator implements Comparator {

  public final int compare(Object pFirst, Object pSecond) {

  int aFirstWeight = ((Dog) pFirst).getWeight();

  int aSecondWeight = ((Dog) pSecond).getWeight();

  int diff = aFirstWeight - aSecondWeight;

  if (diff > 0)

  return 1;

  if (diff < 0)

  return -1;

  else

  return 0;

  }

  }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java中的Arrays类提供了一个sort方法,可以用来对数组进行排序。该方法可以对任何类型的数组进行排序,包括基本数据类型和对象类型。 使用Arrays类的sort方法进行数组排序非常简单,只需要将要排序数组作为参数传递给sort方法即可。例如,对一个整型数组进行排序的代码如下: int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3}; Arrays.sort(arr); 在上面的代码中,我们定义了一个整型数组arr,并将其初始化为一个无序的数组。然后,我们调用Arrays类的sort方法对该数组进行排序排序后,数组arr中的元素将按照从小到大的顺序排列。 需要注意的是,Arrays类的sort方法会改变原始数组的顺序,因此在排序需要备份原始数组,以免数据丢失。此外,如果要对对象数组进行排序,需要保证对象实现了Comparable接口或者传递一个Comparator对象作为参数。 总之,Arrays类的sort方法是Java中非常实用的一个方法,可以方便地对数组进行排序。 ### 回答2: Java是一种功能强大且广泛使用的编程语言,Arrays类是Java提供的一个工具类,其中sort方法是该类中最常用的方法之一 ,主要用于数组排序数组排序可以使数列按照一定规则进行排序,使其便于查找和使用。Arrays类中的sort方法可以将数组按照从小到大或从大到小的顺序进行排序,以便于使用。使用该方法需要注意以下几点。 1. 参数形式 该方法有两个参数形式:sort(int[] array)和sort(Object[] array)。第一个参数形式适用于整型数组,且数组中的元素应全部为整型。第二个参数形式适用于任意类型的对象数组。使用该方法应根据实际情况选择适当的参数形式。 2. 排序顺序 sort方法默认按照升序(从小到大)的顺序排序数组。如果需要按降序(从大到小)排序,需要使用Arrays类中提供的另一个重载方法sort(int[] array, int fromIndex, int toIndex, Comparator<? super Integer> c),并指定Comparator对象的方法来定义排序规则。 3. 排序性能 sort方法采用快速排序算法来进行排序,其时间复杂度为O(nlogn)。在排序大型数组时,该方法的效率较高,但在排序小型数组时,容易出现效率问题。因此,在对小型数组进行排序时,可使用Arrays类中提供的另一个重载方法sort(int[] a, int fromIndex, int toIndex),该方法采用插入排序算法来进行排序,其时间复杂度为O(n^2),但在小型数组中的效率更高。 以上三点是Java数组Arrayssort方法之数组排序时需要注意的问题。在使用sort方法时,还需要根据实际情况灵活使用,以实现最佳的排序效果。 ### 回答3: java数组是一种能够存储一组具有相同数据类型的元素的结构。在实际开发中,我们经常需要对数组进行排序操作,以实现更高效的数据处理。java提供了一种极其方便的数组排序方式,通过调用arrays类的sort方法,可以对数组进行快速排序arrays类是java.util包中的一个类,主要提供了一系列与数组相关的操作方法。其中sort方法可以对数组进行排序,具体使用方法如下: ```java public static void sort(int[] a) //排序一个数组 public static void sort(int[] a, int fromIndex, int toIndex) //对一个数组的一部分进行排序 ``` 其中,第一个方法的参数是一个一维数组,该方法将会对整个数组进行排序;第二个方法的参数是一个一维数组、一个起始索引和一个结束索引。通过指定数组的起始和结束索引,可以仅对数组中的一部分元素进行排序。 在使用sort方法时,需要注意的是,排序需要保证数组已经存储了需要排序的数据。如果数组中存在null元素,sort方法将会抛出NullPointerException异常。如果元素不是可比较类型,例如数组中存储了自定义的对象类型,sort方法将会抛出ClassCastException异常。 sort方法使用快速排序算法实现,具有较好的时间复杂度和空间复杂度。在实际开发中,常用的数组排序方式包括冒泡排序、插入排序、快速排序、归并排序等,每种排序方式都有不同的使用场景和优缺点。在使用sort方法时,需要根据实际情况选择合适的排序方式。 总之,arrays类的sort方法提供了一种便捷的数组排序方式,可以大大提升java的数据处理效率。在实际应用中,我们可以根据需求和数据规模等因素,选择合适的排序方式,以实现更高效的数据处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值