package fr.yunes; import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /* class Code implements ActionListener { @Override public void actionPerformed(ActionEvent e) { System.out.println("coucou"); } } */ // Exemple d'interface fonctionnelle // Une interface fonctionnelle c'est une interface avec une et une seule méthode abstraite @FunctionalInterface interface MonInterface { public void f(); } public class Main { public static void main(String[] args) { JFrame f = new JFrame("test"); JButton b = new JButton("clic"); f.getContentPane().add(b); f.pack(); f.setVisible(true); // Code a = new Code(); // b.addActionListener(a); b.addActionListener( e -> { System.out.println("coucou"); System.out.println("cuicui"); } ); /* Autre exemple d'utilisation des interfaces fonctionnelles Thread t = new Thread( ()->{ for (int i=0; i<10; i++) System.out.println(i); }); t.start(); */ List<Integer> l = new LinkedList<Integer>(); l.add(5); l.add(10); l.add(56); l.add(666); l.add(667); for (int v : l ) { System.out.println(v); } A object = new A(); l.forEach(object::f); l.forEach(A::statf); int resultat = l.stream() .filter(i->i%2==0) .map(Math::sin) .filter(d->d>0.5) .map(d->(int)(d*20)) .reduce(0,Integer::sum); System.out.println(resultat); Map<Boolean,List<Integer>> r = l.stream() .collect(Collectors.partitioningBy(i->i%2==0)); System.out.println(r); Map<Integer,List<Integer>> r2 = l.stream() .collect(Collectors.groupingBy(i->i%3)); System.out.println(r2); } } class A { public static void statf(Integer i) {} public void f(Integer i) { System.out.println("valeur="+i); } }