Я хотел бы хранить объекты кортежей в параллельной коллекции Java, а затем иметь эффективный блокирующий метод запроса, который возвращает первый элемент, соответствующий шаблону. Если такой элемент недоступен, он будет блокироваться до тех пор, пока такой элемент не появится.
Например, если у меня есть класс:
public class Pair {
public final String first;
public final String Second;
public Pair( String first, String second ) {
this.first = first;
this.second = second;
}
}
А коллекция вроде:
public class FunkyCollection {
public void add( Pair p ) { /* ... */ }
public Pair get( Pair p ) { /* ... */ }
}
Я хотел бы запросить его как:
myFunkyCollection.get( new Pair( null, "foo" ) );
, который возвращает первую доступную пару с полем second
, равным «foo» или блоками, пока такой элемент не будет добавлен. Другой пример запроса:
myFunkyCollection.get( new Pair( null, null ) );
должен возвращать первую доступную пару независимо от ее значений.
Решение уже существует? Если это не так, что вы предлагаете для реализации метода get( Pair p )
?
Уточнение: Метод get( Pair p)
также должен удалить элемент. Выбор имени был не очень умным. Лучшее имя будет take( ... )
.