Не удается разрешить метод «запись» в «Карте»

#java

Вопрос:

Я использую этот класс для управления некоторыми данными с помощью Java:

 private static Set<Entry<String, String>> flatten(Map<String, List<String>> map) {
    return map.entrySet().stream().flatMap(e ->
          e.getValue().stream().map(v -> Map.entry(e.getKey(), v))
        )
        .collect(Collectors.toSet());
}
 

Однако, когда я пытаюсь скомпилировать eclipse/intellij, я получаю эту ошибку:

 Cannot resolve method 'entry' in 'Map'
 

Как вы можете видеть в приведенном ниже коде, все работает нормально:
https://www.online-java.com/4LblEuqTN6

Мой код на eclipse выглядит следующим образом:

 import java.util.HashMap;
import java.util.HashSet;
import java.util.Map.*;
import java.util.Set;
import java.util.stream.Collectors;


@RestController
@RequestMapping(value="test")
public class HelloController extends BaseExtController {
    
    private static Set<Entry<String, String>> flatten(Map<String, List<String>> map) {
    return map.entrySet().stream().flatMap(e ->
          e.getValue().stream().map(v -> Map.entry(e.getKey(), v))
        )
        .collect(Collectors.toSet());
    }
    
    private static Map<String, List<String>> group(Set<Map.Entry<String, String>> entries) {
        return entries.stream().collect(Collectors.groupingBy(
            Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toList())
        ));
    }
    
    @RequestMapping (value="sync", method = RequestMethod.GET
            , produces=MediaType.APPLICATION_JSON_VALUE)
    public Map<String, List<String>> syncForms(
                Model model,
                HttpServletRequest request, 
                HttpServletResponse response) throws Exception {
        
        Map<String, List<String>> dictOP = new HashMap<String, List<String>>();
        Map<String, List<String>> dictMobile = new HashMap<String, List<String>>();
       
        List<String> obj1Mobile = new ArrayList<String>();
       
        List<String> obj1Op = new ArrayList<String>();
       
        obj1Mobile.add("Argentina");

        obj1Op.add("Argentina");
       
        dictOP.put("obj1", obj1Op);
       
        dictMobile.put("obj1", obj1Mobile);
       
       
        Set<Entry<String, String>> mobileEntries = flatten(dictMobile);
        Set<Entry<String, String>> opEntries = flatten(dictOP);
        Set<Entry<String, String>> add = new HashSet<>(opEntries);
        add.removeAll(mobileEntries);
        Set<Entry<String, String>> remove = new HashSet<>(mobileEntries);
        remove.removeAll(opEntries);
       
        return group(add);
    }
 

Вы, ребята, знаете, почему это происходит ? Я определяю какой-то неправильный тип ?

Комментарии:

1. Map не имеет entry() метода. Для чего предназначен этот код?

2. Map.entry() был добавлен в Java 9, вы случайно не компилируете с помощью Java 8?

3. Да, я использую Java 8.

4. Что ж, тогда этот метод будет вам недоступен. Либо обновите свою версию Java, либо предоставьте собственную реализацию Map.Entry , которую вы можете сопоставить (или используйте библиотеку, такую как коллекции Apache Commons, которая должна иметь готовую к использованию реализацию).

5. Большое спасибо @Thomas