English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
지정된 키가 존재하지 않으면 Java HashMap merge() 메서드는 지정된 키를/값 매핑이 해시 매핑에 추가됩니다.
하지만 지정된 키가 이미 값과 연결되어 있다면 이 메서드는 오래된 값을 지정된 함수의 결과로 대체합니다.
merge() 메서드의 문법은 다음과 같습니다:
hashmap.merge(key, value, remappingFunction)
merge() 메서드는3개의 매개변수:
key - 키(key)와 연결된 값을 지정합니다
value - 키(key)가 이미 어떤 값과 연결되어 있다면 키(key)와 연결된 값이 필요합니다
remappingFunction - 키(key)가 이미 값과 연결되어 있다면 결과는 키(key)와 연결됩니다.
키(key)와 관련된 새 값을 반환합니다
키(key)와 관련된 값이 없으면 null을 반환합니다
주의:remappingFunction 결과가 null이면 지정된 키의 매핑을 제거합니다.
import java.util.HashMap; class Main { public static void main(String[] args) { //HashMap 생성 HashMap<String, Integer> prices = new HashMap<>(); //HashMap에 항목 추가 prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: ") + prices); int returnedValue = prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue); System.out.println("衬衫的价格: " + returnedValue); //打印更新的HashMap System.out.println("更新后的 HashMap: ") + prices); }; };
출력 결과
HashMap: {Pant=150, Bag=300, Shoes=200} 衬衫的价格: 100 업데이트된 HashMap: {Pant=150, Shirt=100, Bag=300, Shoes=200}
위의 예제에서는 'prices'라는 이름의 해시 매핑을 생성했습니다. 주의하세요
prices.merge("Shirt", 100, (oldValue, newValue) -> oldValue + newValue)
여기서는 lambda 표현식 (oldValue, newValue)를 사용했습니다. -> oldValue + newValue)를 remappingFunction 함수로 사용합니다. lambda 표현식에 대해 더 알고 싶다면, 방문해 주세요Java Lambda 표현식。
prices에서 Shirt 키가 존재하지 않기 때문에 merge() 메서드는 Shirt=100 삽입 맵. 그리고 remappingFunction의 결과는 무시됩니다.
import java.util.HashMap; class Main { public static void main(String[] args) { // HashMap 생성 HashMap<String, String> countries = new HashMap<>(); // HashMap에 항목 추가 countries.put("Washington", "America"); countries.put("Canberra", "Australia"); countries.put("Madrid", "Spain"); System.out.println("HashMap: ") + countries); // Washington 키의 병합 맵 String returnedValue = countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue); System.out.println("Washington: ") + returnedValue); // 打印更新的HashMap System.out.println("更新后的 HashMap: ") + countries); }; };
출력 결과
HashMap: {Madrid=Spain, Canberra=Australia, Washington=America} Washington: America/USA 更新后的 HashMap: {Madrid=Spain, Canberra=Australia, Washington=America/USA},
在上面的示例中,我们创建了一个名为countries的哈希映射。注意表达式
countries.merge("Washington", "USA", (oldValue, newValue) -> oldValue + "/" + newValue)
在这里,我们使用了lambda表达式(oldValue, newValue) -> oldValue + "/" + newValue) 作为 remappingFunction。
由于键Washington已经存在countries中,所以旧值将由remappingFunction返回的值替换。因此,Washington 的映射包括值 America/USA。
import java.util.HashMap; class Main { public static void main(String[] args) { //HashMap 생성 HashMap<String, Integer> prices1 = new HashMap<>(); //HashMap에 항목 추가 prices1.put("Pant", 230); prices1.put("Shoes", 350); System.out.println("HashMap 1: " + prices1); //另一个hashmap 생성 HashMap<String, Integer> prices2 = new HashMap<>(); //HashMap에 항목 추가 prices2.put("Shirt", 150); prices2.put("Shoes", 320); System.out.println("HashMap 2: " + prices2); // forEach()访问prices2의每个条目 // merge()将每个条目从prices2插入到prices1 prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> { //較小的值 if (oldValue < newValue) { return oldValue; }; else { return newValue; }; }); System.out.println("합성된 HashMap: " + prices1); }; };
출력 결과
HashMap 1: {Pant=230, Shoes=350} HashMap 2: {Shirt=150, Shoes=320} 합성된 HashMap: {Pant=230, Shirt=150, Shoes=320}
위의 예제에서는 두 개의 이름이 prices1와 prices2의 해시 매핑。주의할 필요가 있습니다.
prices2.forEach((key, value) -> prices1.merge(key, value, (oldValue, newValue) -> { if (oldValue < newValue) { return oldValue; }; else { return newValue; }; });
在这里,HashMap forEach()方法访问哈希表prices2的每个条目,并将其合并到哈希表prices1中。 我们使用了两个lambda表达式:
(key, value) -> prices.merge(...) - 그리고 prices에 접근합니다1의 각 항목을 가져오고 merge() 메서드에 전달합니다。
(oldValue, newValue) -> {...} - 이는 재지정 함수(remappingFunction)입니다. 두 가지 값을 비교하고 더 작은 값을 반환합니다.
두 개의 해시 맵에서 모두 Shoes 키가 존재하기 때문에, Shoes의 값은 재지정 함수(remappingFunction)의 결과로 대체됩니다.
두 개의 해시 맵을 합쳐서 putAll() 메서드를 사용할 수도 있습니다. 그러나 두 개의 해시 맵 모두에 키가 존재하면 이전 값은 새로운 값에 대체됩니다
merge()와 달리, putAll() 메서드는 재지정 기능을 제공하지 않습니다. 따라서, 중복 키에 저장할 값을 확정할 수 없습니다.
putAll() 메서드에 대한更多信息를 알고 싶다면 방문하십시오Java HashMap putAll()。