当前位置:网站首页>Interface fonctionnelle, référence de méthode, Widget de tri de liste implémenté par lambda
Interface fonctionnelle, référence de méthode, Widget de tri de liste implémenté par lambda
2022-07-04 16:12:00 【Fabricant de bogues humanoïdes 9527】
1.InJava8Une interface fonctionnelle a été introduite dansConsumerObjet de,L'objet peut passer la méthode comme paramètre.
À propos delambdaTutoriels pour
/** * Tri des collections */
@AllArgsConstructor
public class CollSort {
// Facteur de tri
private final Long order;
public final static CollSort DESC = new CollSort(-1L);
public final static CollSort ASC = new CollSort(1L);
// Trier par nombre
public <E> Collection<E> sort(Collection<E> collection, ProcessorNumber<E> getParam) {
return collection.stream()
.filter(Objects::nonNull)
.sorted((o1, o2) -> {
// Ici, la méthode abstraite entrante est exécutée,Et passer dans les paramètres requis par la méthode de fonction,
// getParam La valeur de retour de a été déterminée dans la méthode de fonction abstraite
long result = Long.parseLong(String.valueOf(getParam.accept(o1))) - Long.parseLong(String.valueOf(getParam.accept(o2)));
result = result * order; // Le coefficient de tri intervient
return result == 0 ? 0 : result < 0 ? -1 : 1;
})
.collect(Collectors.toList());
}
// Trier par heure
public <E> Collection<E> sort(Collection<E> collection, ProcessorDate<E> getParam) {
return collection.stream()
.filter(Objects::nonNull) // Filtrage de données invalide
.sorted((o1, o2) -> {
long t1 = getParam.accept(o1).getTime(); // Voici une méthode abstraite getParam La valeur de retour de a été déterminée dans la méthode de fonction abstraite
long t2 = getParam.accept(o2).getTime();
long result = t1 - t2;
result = result * order; // Le coefficient de tri intervient
return result == 0 ? 0 : result < 0 ? -1 : 1;
})
.collect(Collectors.toList());
}
}
@FunctionalInterface
interface ProcessorDate<E> {
/** * Méthode de fonction abstraite pour obtenir les propriétés temporelles de l'objet * * @param t Objet * @return Propriétés temporelles de l'objet */
Date accept(E t);
}
@FunctionalInterface
interface ProcessorNumber<E> {
/** * Méthode de fonction abstraite pour obtenir les propriétés numériques d'un objet * * @param t Objet * @return Propriétés numériques de l'objet */
Number accept(E t);
}
Utiliser
public static void main(String[] args) {
SortTest sortTest = new SortTest();
ArrayList<User> users = new ArrayList<>();
users.add(new User("zz", 14,new Date()));
users.add(new User("zz", 17,new Date(System.currentTimeMillis()+1000000)));
users.add(new User("zz", 11,new Date(System.currentTimeMillis()+4000000)));
users.add(new User("zz", 15,new Date(System.currentTimeMillis()+9000000)));
users.add(new User("zz", 21,new Date(System.currentTimeMillis()+8000000)));
users.add(new User("zz", 7,new Date(System.currentTimeMillis()+3000000)));
sortTest.test(users);
}
public void test(List<User> users) {
// Pour les appels de méthodes d'outils ordinaires , La différence est que les paramètres sont une méthode , Il est également possible de se référer directement à la méthode
Collection<User> ageSort = CollSort.ASC.sort(users, User::getAge);
System.out.println("Classement par âge=========================");
ageSort.forEach(System.out::println);
System.out.println(" Tri des anniversaires ======================");
Collection<User> timeSort = CollSort.DESC.sort(users, User::getBirthDay);
timeSort.forEach(System.out::println);
}
Effets
L'interface de fonction peut être étendue en fonction des besoins ,Attention requiseType de paramètre
EtType de valeur de retour
, La plupart du temps, il suffit de changer le type de valeur de retour ;
Le type de paramètre et le type de valeur de retour affectent les paramètres que cette méthode de fonction doit passer au moment de l'appel , Et les valeurs de réponse
边栏推荐
- An article learns variables in go language
- Redis' optimistic lock and pessimistic lock for solving transaction conflicts
- Unity script API - GameObject game object, object object
- Unity prefab day04
- 2022年九大CIO趨勢和優先事項
- Socks agent tools earthworm, ssoks
- What should ABAP do when it calls a third-party API and encounters garbled code?
- Quelles sont les perspectives de l'Internet intelligent des objets (aiot) qui a explosé ces dernières années?
- How was MP3 born?
- [tutorial] yolov5_ DeepSort_ The whole process of pytoch target tracking and detection
猜你喜欢
Talking about Net core how to use efcore to inject multiple instances of a context annotation type for connecting to the master-slave database
Move, say goodbye to the past again
Redis' optimistic lock and pessimistic lock for solving transaction conflicts
Working group and domain analysis of Intranet
Quelles sont les perspectives de l'Internet intelligent des objets (aiot) qui a explosé ces dernières années?
Book of night sky 53 "stone soup" of Apache open source community
干货 | fMRI标准报告指南新鲜出炉啦,快来涨知识吧
中国主要城市人均存款出炉,你达标了吗?
Penetration test --- database security: detailed explanation of SQL injection into database principle
Weekly recruitment | senior DBA annual salary 49+, the more opportunities, the closer success!
随机推荐
What is the catalog of SAP commerce cloud
One question per day 540 A single element in an ordered array
Socks agent tools earthworm, ssoks
MySQL federated primary key_ MySQL creates a federated primary key [easy to understand]
Audio and video technology development weekly | 252
Recommend 10 excellent mongodb GUI tools
The per capita savings of major cities in China have been released. Have you reached the standard?
PR FAQ: how to set PR vertical screen sequence?
The 17 year growth route of Zhang Liang, an open source person, can only be adhered to if he loves it
Review of Weibo hot search in 2021 and analysis of hot search in the beginning of the year
Redis' optimistic lock and pessimistic lock for solving transaction conflicts
Unity脚本介绍 Day01
Understand Alibaba cloud's secret weapon "dragon architecture" in the article "science popularization talent"
. Net applications consider x64 generation
MySQL learning notes - data type (2)
AI做题水平已超过CS博士?
Unity预制件Prefab Day04
Common API day03 of unity script
Interface test - knowledge points and common interview questions
Detailed explanation of MySQL composite index (multi column index) use and optimization cases