相关疑难解决方法(0)

有没有办法比较lambdas?

假设我有一个使用lambda表达式(闭包)定义的对象列表.有没有办法检查它们,以便可以进行比较?

我最感兴趣的代码是

    List<Strategy> strategies = getStrategies();
    Strategy a = (Strategy) this::a;
    if (strategies.contains(a)) { // ...
Run Code Online (Sandbox Code Playgroud)

完整的代码是

import java.util.Arrays;
import java.util.List;

public class ClosureEqualsMain {
    interface Strategy {
        void invoke(/*args*/);
        default boolean equals(Object o) { // doesn't compile
            return Closures.equals(this, o);
        }
    }

    public void a() { }
    public void b() { }
    public void c() { }

    public List<Strategy> getStrategies() {
        return Arrays.asList(this::a, this::b, this::c);
    }

    private void testStrategies() {
        List<Strategy> strategies = getStrategies();
        System.out.println(strategies);
        Strategy a = (Strategy) …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

76
推荐指数
3
解决办法
1万
查看次数

IdentitySet / IdentityHashSet(使用IdentityHashMap)

我知道IdentityHashMap,但是我需要使用“ identitySet ”之类的东西(它使用等于-> o1 == o2)。当我用“ extractor”(JavaFX)收听Observable列表时,我将使用一个:

 List<Person> deleteList = new ArrayList<>();
 List<Person> addList = new ArrayList<>();

 ObservableList<Person> list = FXCollections.observableArrayList(Person.extractor());
    list.add(new Person("a",1));
    list.add(new Person("b",2));
    list.add(new Person("c",3));

    list.addListener((ListChangeListener<Person>) observable -> {
        if(observable.next()) {
            if (observable.wasAdded()) {
                addList.addAll(observable.getAddedSubList());
            }
            if (observable.wasUpdated()) {
                deleteList.add(list.get(observable.getFrom()));
            }
            if (observable.wasRemoved()) {
                deleteList.addAll(observable.getRemoved());
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

人类:

public class Person {
private final StringProperty s;
private final DoubleProperty d;

//Getters and Setters
// ...

@Override
public int hashCode() {
    int result = …
Run Code Online (Sandbox Code Playgroud)

java set identity-map observable javafx-8

4
推荐指数
2
解决办法
2554
查看次数

标签 统计

java ×2

identity-map ×1

java-8 ×1

javafx-8 ×1

lambda ×1

observable ×1

set ×1