Java的查找与排序

Java中的查找:

顺序查找,指从第一个元素开始,以此查找。典型的有List中的indexOf方法。

int index=list.indexOf("内容");  该方法的本质就是顺序查找。当数据量庞大时,效率低下。

二分查找,二分查找的前提是该内容是有序的,因此处于无序状态的需要先进行排序。类似于人们玩猜大小的游戏。Java的util包中的Arrays类的binarySearch方法可以进行二分查找,它以一个数组和目标值作为输入,返回目标的索引值。如果不存在,就返回一个负值,该负值为如果此数在数组中,那么它应该在的位置。 列表可以利用Collections.binarySearch(list,target)达到同样的效果。

Java中的排序:

Java对于数组提供了排序方法,还是那个Arrays类,Arrays.sorts(数组名);同样的,这是依托于类实现了Compareable接口

List的排序利用的是Collection.sort(list)

当处理原数据类型的数据时,Arrays.sort采用的快速排序;当处理对象数据时,Collection和Arrays采用的是归并排序。

Java类库中的查找与排序
Arrays.binarySearch(array,value) 在一个已经排好序的数组中返回索引值,不存在则返回负数
Arrays.sort(array) 数组排序
Collections.binarrySearch(list,value) 在一个已经排好序的列表中返回索引值,不存在则返回负数
Collection.shuffle(list) 打乱排序(随机排序)
Collection.sort(list) 列表排序

比较器

按照自定义规则进行排序,例如按照String的长度进行排序。

比较器的声明规则:不同于之前见到的Compareable接口,比较器的声明在一个新的类之中。并且它包含两个比较的对象,而不是之前见到的一个。

import java.util.Comparator;

public class ui implements Comparator {
    @Override
    public int compare(String o1, String o2) {
        return o1.length()-o2.length();
    }
}

调用比较器就很简单了,sort函数有两个参数,我们之前只用了一个,第二个就是为比较器预留的。


import java.util.*;

public class Main {
    public static void main(String[] args) {
    String [] a=new String[3];
    a[0]="Hello";
    a[2]="jkj";
    a[1]="LLLLLLLLLLLLLLLL";
    Arrays.sort(a,new ui());//注意如此声明
    System.out.println(Arrays.toString(a));//输出数组的方法应该好好看看。
    }
}

对String排序中对大小写不敏感利用String类中的比价器常量CASE_INSENSITIVE_ORDER

你可能感兴趣的:(Java)