Java Collections Java Java API
Interface:
java.util.Comparator
Method:
static <T> Comparator<T> comparingDouble(ToDoubleFunction<? super T> keyExtractor)
This method returns a Comparator which compares the objects according to the keyExtractor function. This function extracts a double sort key from a type T
Examples
package com.logicbig.example.comparator;
import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List;
public class ComparingDoubleExample {
public static void main(String... args) { List<Page> list = createExamplePages(); System.out.printf("before sort: %s%n", list); Collections.sort(list, Comparator.comparingDouble(Page::getIndex)); System.out.printf("after sort: %s%n", list); }
private static List<Page> createExamplePages() { return Arrays.asList( Page.create(3, "content 3"), Page.create(2, "content 2"), Page.create(1, "content 1")); }
private static class Page { private double index; private String content;
public Page(double index, String content) { this.index = index; this.content = content; }
@Override public String toString() { return "Page{" + "index=" + index + ", content='" + content + '\'' + '}'; }
public static Page create(double index, String content) { return new Page(index, content); }
public double getIndex() { return index; } } }
Outputbefore sort: [Page{index=3.0, content='content 3'}, Page{index=2.0, content='content 2'}, Page{index=1.0, content='content 1'}] after sort: [Page{index=1.0, content='content 1'}, Page{index=2.0, content='content 2'}, Page{index=3.0, content='content 3'}]
This example simply defined a static compare method. package com.logicbig.example.comparator;
import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List;
public class ComparingDoubleExample2 {
public static void main(String... args) { List<Page> list = createExamplePages(); System.out.printf("before sort: %s%n", list); Collections.sort(list, Page::compareByIndex); System.out.printf("after sort: %s%n", list); }
private static List<Page> createExamplePages() { return Arrays.asList( Page.create(3, "content 3"), Page.create(2, "content 2"), Page.create(1, "content 1")); }
private static class Page { private double index; private String content;
public Page(double index, String content) { this.index = index; this.content = content; }
public static int compareByIndex(Page o1, Page o2) { Comparator<Page> pageComparator = Comparator.comparingDouble(value -> value.index); return pageComparator.compare(o1, o2); }
@Override public String toString() { return "Page{" + "index=" + index + ", content='" + content + '\'' + '}'; }
public static Page create(double index, String content) { return new Page(index, content); } } }
Outputbefore sort: [Page{index=3.0, content='content 3'}, Page{index=2.0, content='content 2'}, Page{index=1.0, content='content 1'}] after sort: [Page{index=1.0, content='content 1'}, Page{index=2.0, content='content 2'}, Page{index=3.0, content='content 3'}]
|
|