`

JDK Arrays sort

阅读更多
1. List排序的调用
  
Collections.sort() --> Arrays.sort --> MergeSort()


2. 两种排序策略:Comparable 和 Comparator

  
    public static <T> void sort(List<T> list, Comparator<? super T> c) {
	Object[] a = list.toArray();
	Arrays.sort(a, (Comparator)c);
	ListIterator i = list.listIterator();
	for (int j=0; j<a.length; j++) {
	    i.next();
	    i.set(a[j]);
	}
    }
   


  
Comparator
是在外面定义的排序策略,类似于策略模式,可以传递进去
   不同的策略实现。

  
   public static <T extends Comparable<? super T>> void sort(List<T> list) {
	Object[] a = list.toArray();
	Arrays.sort(a);
	ListIterator<T> i = list.listIterator();
	for (int j=0; j<a.length; j++) {
	    i.next();
	    i.set((T)a[j]);
	}
    }
   


  
Comparable
是实体类中实现的方法。

3. Comparable的定义
  
   public interface Comparable<T> {
       public int compareTo(T o);
   }
   


4. Comparator的定义
  
   public interface Comparator<T> {
       int compare(T o1, T o2);
   }
   

 
分享到:
评论

相关推荐

    JDK8 中文帮助文档(jdk api 1.8 google.CHM)

    除了Lambda,JDK8还引入了方法引用和构造器引用,它们可以直接引用类的方法或构造器,进一步简化代码,例如`Arrays.sort(list, Integer::compareTo)`。 **4. Stream API** Stream API是JDK8的一大亮点,它提供了...

    jdk1.8 JDK1.8 中文 CHM

    3. **方法引用来替代lambda**:除了lambda表达式,还可以使用方法引用,如`Collections.sort(names, String::compareToIgnoreCase)`,这会调用`compareToIgnoreCase`方法来排序列表。 4. **Optional类**:为了解决...

    jdk1.8-src

    在JDK1.8中,可以通过方法引用来代替Lambda表达式,如 `Arrays.sort(array, Integer::compareTo)`。方法引用可以是类::静态方法、实例::实例方法或Class::方法,这样可以使代码更加清晰和简洁。 四、Optional类 ...

    jdk版本资源,jdk1.4,jdk1.6,jdk1.8

    2. **方法引用来代替匿名内部类**:可以用方法引用替换某些lambda表达式,如`Arrays.sort(list, Comparator.comparing(Person::getAge))`。 3. **流API(Stream API)**:`java.util.stream`包提供了处理集合的新...

    JDK1.8.0_65解压版

    例如,`Arrays.sort(names, String::compareToIgnoreCase)` 使用了`String`类的`compareToIgnoreCase`方法。 3. **默认方法**:在接口中可以定义带有实现的默认方法,这使得接口可以增加新的功能而不破坏现有的实现...

    jdk8中文手册

    这进一步减少了代码量,如`Arrays::sort`或`String::length`。 4. **Stream API** Stream API是处理集合数据的新方式,提供了链式操作,如过滤、映射和归约,适用于大量数据的处理。流可以是串行的,也可以并行的...

    JDK 1.8中文API文档

    这使得代码更简洁,如`Arrays.sort(list, String::compareTo)`。 4. **默认方法** 在接口中引入了默认方法,允许接口提供默认实现。这种特性使得在不破坏向后兼容性的前提下,可以为已有的接口添加新的方法。例如...

    jdk1.8windows版.zip

    这在处理高阶函数时非常有用,如`Arrays.sort()`和`Stream.map()`。 此外,JDK 1.8还增强了日期和时间API,引入了`java.time`包,替代了之前易用性较差的`java.util.Date`和`java.util.Calendar`。新API更直观,更...

    jdk1.7免安装版

    对于数组,Java 7新增了`Arrays.copyOfRange()`方法,可以方便地复制数组的一部分到新数组。此外,`Collections.sort()`方法现在也可以对并行数组进行排序,提升了性能。 JDK1.7还增强了枚举类型,允许枚举实现多个...

    jdk1.8中文版文档

    List&lt;String&gt; names = Arrays.asList("Alice", "Bob", "Charlie"); List&lt;String&gt; filteredNames = names.stream() .filter(name -&gt; name.startsWith("A")) .collect(Collectors.toList()); ``` ### 4. 接口的默认...

    JDK1.8手册,中文

    例如,`List&lt;String&gt; list = Arrays.asList("a", "b", "c"); list.sort(String::compareTo);` 这里的`String::compareTo`就是一个方法引用,它等价于使用Lambda `(String s1, String s2) -&gt; s1.compareTo(s2)`。 三...

    jdk1.8 32位windows版

    比如,`Arrays::sort` 可以直接用于排序操作,而无需创建额外的比较器。 另外,JDK 1.8还增加了日期时间API的全面改革。新的`java.time`包取代了过时的`java.util.Date`和`java.util.Calendar`,提供了更加强大且...

    jdk1.6.0_35.rar

    1. **泛型的改进**:在JDK 1.6中,泛型的类型推断能力得到了增强,使得编写代码更加简洁,如`Arrays.sort()`方法现在可以对自定义类型的数组进行排序。 2. **枚举类型(Enum)的增强**:JDK 1.6支持枚举的比较,...

    jdk 1.8.chm

    例如,`Arrays.sort()`可以使用`Comparator.comparing()`方法引用,简化比较逻辑。 3. **接口默认方法** 在JDK 1.8中,接口可以拥有默认方法,用`default`关键字定义。这使得接口可以提供默认实现,而不会破坏现有...

    jdk-8u241-windows-64位-官网最新版.zip

    Collections.sort(names, String::compareToIgnoreCase); ``` ### Stream API Stream API是JDK8中的一个重大创新,它提供了对集合进行高效、声明式处理的能力。开发者可以通过链式调用来过滤、映射、聚合数据,使得...

    windows 64位 jdk7和jdk8

    2. **多路归并排序**:Java 7在`java.util.Arrays.sort()`方法中实现了多路归并排序,提高了大规模数据的排序效率。 3. **钻石操作符**:在创建匿名内部类或者泛型实例时,可以省略类型参数,编译器会根据上下文...

    jdk1.8.0_25.zip

    例如,`Arrays.sort(list, Integer::compareTo)`,这使得代码更加清晰。 3. **默认方法**: - Java 8允许在接口中定义带有默认实现的函数,这使得接口可以扩展而不会破坏现有的实现。它在增加新功能时提供了更大的...

    jdk1.8.0_101.zip

    例如,`Arrays.sort(list, Comparator.comparing(Person::getName))`。 4. **Stream API**:Stream API是Java 8中的核心特性,它提供了处理集合的新方式,支持并行处理和数据管道。可以进行过滤、映射、归约等操作...

    jdk1.8.0_201.zip

    6. **方法引用来替代Lambda**:除了Lambda表达式,Java 8还引入了方法引用,可以直接引用已有方法作为Lambda表达式,如`Arrays.sort(list, Integer::compareTo)`。 7. **Optional类**:`Optional`是一个容器对象,...

    java jdk 8 帮助文档 中文 文档 chm 谷歌翻译(jdk api 1.8_google)

    例如,`Arrays.sort()`方法现在可以接受一个Comparator的lambda表达式,用于自定义排序规则。 2. **Stream API**:Stream API提供了一种新的处理数据的方式,类似于SQL查询,但适用于内存中的数据。它支持集合操作...

Global site tag (gtag.js) - Google Analytics