Получить ключи и пару значений после удаления элемента из списка ключей на карте <List <String>, IInterface> - PullRequest
0 голосов
/ 08 июня 2019

В моем случае есть интерфейс IInterface и карта List в качестве ключей и IInterface в качестве значений.

public interface IInterface{
   ....
}

public MyClass{
    Map<List<Integer>, IInterface> interfaceByStringList;
    MyClass(){
        interfaceByStringList = new HashMap<List<Integer>,IInterface>();
    }

    //Method to remove one element from key list
    public Map<List<Integer>, IInterface> myMethod(IntegerelementToRemove){
        ................
    }
}

В приведенном выше сценарии я должен удалить «elementToRemove» из списка ключей, где он присутствует в keySet () карты. Затем я должен вернуть обновленную карту.

Например, Набор ключей карты выглядит так:

{[1,2,3],[4,7,5],[67],[23,41]}
and corresponding values: 
{IInterface1, IInterface2,IInterface3,IInterface4]

Предположим, если я хочу удалить 4, тогда моя обновленная карта вернет: Обновлен набор ключей карты:

{[1,2,3],[7,5],[67],[23,41]}
and corresponding values: 
{IInterface1, IInterface2,IInterface3,IInterface4]

Ответы [ 2 ]

0 голосов
/ 08 июня 2019

Это будет работать для вас.

public Map<List<Integer>, IInterface> myMethod(int integerElementToRemove){
    interfaceByStringList
            .keySet()
            .stream()
            .filter(integers -> integers.contains(integerElementToRemove))
            .forEach(integers -> integers.remove(Integer.valueOf(integerElementToRemove)));
    return interfaceByStringList;
}
0 голосов
/ 08 июня 2019

Возьми:

interfaceByStringList
     .entrySet()
     .removeIf(entry -> entry.getKey().contains(elementToRemove));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...