Java 为什么Pair.getKey()和Pair.getValue()会抛出错误?
我已经建立了一个maven项目。我正在Eclipse IDE中运行它,但它抛出了一个错误: 我已经尝试过mvn clean和mvn eclipse:eclipse从头开始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
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如果这解决了你的问题,你能接受答案吗?