Java 为什么Pair.getKey()和Pair.getValue()会抛出错误?

Java 为什么Pair.getKey()和Pair.getValue()会抛出错误?,java,eclipse,maven,Java,Eclipse,Maven,我已经建立了一个maven项目。我正在Eclipse IDE中运行它,但它抛出了一个错误: 我已经尝试过mvn clean和mvn eclipse:eclipse从头开始 import java.math.BigDecimal; import java.math.MathContext; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import ja

我已经建立了一个maven项目。我正在Eclipse IDE中运行它,但它抛出了一个错误:

我已经尝试过mvn clean和mvn eclipse:eclipse从头开始

import java.math.BigDecimal;
import java.math.MathContext;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.amazon.mws.finances._2015_05_01.model.ShipmentEvent;
import com.amazon.mws.finances._2015_05_01.model.ShipmentItem;
import com.sun.tools.javac.util.Pair;
public Map<String, BigDecimal> getRefundEventFinancialSummary(ShipmentEvent shipmentEvent) {
Map<String, BigDecimal> chargeMap = new HashMap<>();
            List<ShipmentItem> refundItemsList = shipmentEvent.getShipmentItemAdjustmentList();
            List<Pair<String, BigDecimal>> accountedCostsList = refundItemsList.stream().map(this::getAccountedCosts)
                    .flatMap(List::stream).collect(Collectors.toList());
            for (Pair<String, BigDecimal> pair : accountedCostsList) {
                String keyString = pair.getKey();
                if (chargeMap.containsKey(keyString)) {
                    chargeMap.replace(keyString, chargeMap.get(keyString).add(pair.getValue()));
                } else {
                    chargeMap.put(keyString, pair.getValue());
                }
            }
            return chargeMap;
          }
import java.math.BigDecimal;
导入java.math.MathContext;
导入java.util.array;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入java.util.stream.collector;
import com.amazon.mws.financials._2015_05_01.model.ShipmentEvent;
导入com.amazon.mws.financials._2015_05_01.model.ShipmentItem;
导入com.sun.tools.javac.util.Pair;
公共地图GetReturnEventFinancialSummary(ShipmentEvent ShipmentEvent){
Map chargeMap=newhashmap();
List ReturnItemsList=shipmentEvent.getShipmentItemAdjustmentList();
List accountedCostsList=ReturnItemsList.stream().map(this::getAccountedCosts)
.flatMap(List::stream).collect(collector.toList());
for(成对:accountedCostsList){
字符串keyString=pair.getKey();
if(chargeMap.containsKey(键串)){
replace(keyString,chargeMap.get(keyString.add)(pair.getValue());
}否则{
chargeMap.put(keyString,pair.getValue());
}
}
返回chargeMap;
}
我看不出逻辑有任何问题,但它抛出了以下错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The method getKey() is undefined for the type Pair<String,BigDecimal>
The method getValue() is undefined for the type Pair<String,BigDecimal>
The method getValue() is undefined for the type Pair<String,BigDecimal>
线程“main”java.lang中出现异常。错误:未解决的编译问题: 类型对的方法getKey()未定义 类型对的方法getValue()未定义 类型对的方法getValue()未定义 请帮助我,可能的问题是什么?这是一个eclipse问题吗


编辑:添加了导入语句

您正在使用的Pair类似乎没有这些方法。尝试在eclipse中打开Pair类(使用java反编译器插件)。 如果您使用的是
com.sun.tools.javac.util.Pair
类,则需要使用
Pair.fst
Pair.snd
。 更改代码:

for (Pair<String, BigDecimal> pair : accountedCostsList) {
            String keyString = pair.fst;
            if (chargeMap.containsKey(keyString)) {
                chargeMap.replace(keyString, chargeMap.get(keyString).add(pair.snd));
            } else {
                chargeMap.put(keyString, pair.snd);
            }
        }
for(成对:accountedCostsList){
字符串keyString=pair.fst;
if(chargeMap.containsKey(键串)){
replace(key字符串,chargeMap.get(key字符串).add(pair.snd));
}否则{
chargeMap.put(键串,pair.snd);
}
}

我尝试了导入javafx.util.Pair,问题得到了解决。谢谢大家

可以共享导入语句吗?尝试使用Map.entryset()来迭代映射为什么使用
com.sun.tools.javac.util.Pair
?这是一个内部类(即私有API),您不应该使用它。请参阅以了解替代的Pair实现。嗨,Gaurav,您猜对了。我正在使用com.sun.tools.javac.util.Pair,但添加了import Pair.fst;导入pair.snd;也没有解决问题。请使用
pair.fst
而不是
pair.getKey()
。您不需要在导入语句中添加任何内容。检查更新的答案。希望这有帮助。@Katya047如果这解决了你的问题,你能接受答案吗?