Close

Java Collections - Comparator.comparingDouble() Examples

Java Collections Java Java API 


Interface:

java.util.Comparator

java.util.ComparatorComparatorLogicBig

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;
}
}
}

Output

before 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);
}
}
}

Output

before 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'}]




See Also