All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.netty.core.Ordered Maven / Gradle / Ivy

package com.github.netty.core;

import java.util.Comparator;
import java.util.TreeSet;
import java.util.function.Function;

/**
 * Ordered
 *
 * @author wangzihao
 * 2019/8/31/022
 */
public interface Ordered {
    /**
     * Avoid TreeSet overwrites data
     * return -1 or 1. not return 0
     */
    Comparator COMPARATOR = (c1, c2) ->
            c1 == c2 ? 0 : c1.getOrder() < c2.getOrder() ? -1 : 1;

    /**
     * test comparator
     *
     * @param args args
     */
    static void main(String[] args) {
        /** no overwrites by {{@link COMPARATOR}} */
        TreeSet set1 = new TreeSet<>(COMPARATOR);
        set1.add(() -> 1);
        set1.add(() -> 1);
        System.out.println("no overwrites. set1 = " + set1.size());

        /** overwrites by jdk method {{@link Comparator#comparing(Function)}} */
        TreeSet set2 = new TreeSet<>(Comparator.comparing(Ordered::getOrder));
        set2.add(() -> 1);
        set2.add(() -> 1);
        System.out.println("overwrites. set2 = " + set2.size());
    }

    /**
     * Priority order
     *
     * @return The smaller the value of order, the more likely it is to be executed first
     */
    int getOrder();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy