Функция Map.compute в java - PullRequest
0 голосов
/ 06 апреля 2020
import java.util.*;

public class JavaApplication32 {

    public static void main(String args[])
    {
     HashMap<String, String> map = new HashMap<>(); 
     map.put("Name", "Aman"); 
     map.put("Address", "Kolkata"); 
     map.compute("Name", (key, val)  -> ( val==null) ? "Gaurav" : val="Great"); 
     System.out.println(map.get("Name"));



    }}

Приведенный выше код показывает ошибку. Но когда тип данных значения выбран int, код работает

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Заменить

map.compute("Name", (key, val)  -> ( val==null) ? "Gaurav" : val="Great"); 

на

map.compute("Name", (key, val) -> (val == null) ? "Gaurav" : "Great");

Вывод:

Great

Объяснение: Синтаксис троичного оператора выглядит следующим образом:

variable = condition ? value-if-condition-is-true : value-if-condition-is-false

например, следующий код присваивает значение x в z

int x = 10, y = 5, z;
z = x > y ? x : y;
System.out.println(z);

Однако, если вы вообще хотите сохранить оставив операнд внутри оператора, вы можете сделать это, используя () следующим образом:

map.compute("Name", (key, val) -> (val == null) ? "Gaurav" : (val = "Great"));

Аналогично,

z = x > y ? x : (z = y);

Даже если эти два оператора, приведенные выше, будут успешно скомпилированы, я рекомендую никогда не делать этого так, поскольку это просто запутает любого, кто просматривает ваш код.

0 голосов
/ 06 апреля 2020

Нет необходимости присваивать val

import java.util.*;

public class JavaApplication32 {

public static void main(String args[])
{
 HashMap<String, String> map = new HashMap<>(); 
 map.put("Name", "Aman"); 
 map.put("Address", "Kolkata"); 
 map.compute("Name", (key, val)  -> ( val==null) ? "Gaurav" : "Great"); 
 System.out.println(map.get("Name"));
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...