抱歉,如果标题不清楚,我不太擅长编程术语。
我有 2 个字符串 ArrayList 和一个从一个方法获得的整数 ArrayList,该方法通过集合 LinkedHashMap< String, List< String>> 传递给单独的方法。但是,当我尝试将整数 ArrayList 设置为在接收方法中声明的空 ArrayList 时,它显示语法错误:“不兼容的类型:List< String> 无法转换为 List<整数>”。
启动方法:
public static void main(String[] args) {
try{
LinkedHashMap lhm = new LinkedHashMap();
List<String> listEPC = new ArrayList<String>();
List<String> listTimeStamp = new ArrayList<String>();
List<Integer> listAntenna = new ArrayList<Integer>();
String tagID = "EQ5237";
String TimeStampStr = "12:23:22";
int tagAntenna = 2;
listEPC.add(tagID);
listTimeStamp.add(TimeStampStr);
listAntenna.add(tagAntenna);
lhm.put("epcs", listEPC);
lhm.put("timestamps", listTimeStamp);
lhm.put("antennas", listAntenna);
insertData insert = new insertData();
insert.insertData(lhm); //send map with values to new method
}catch(Exception e){
e.printStackTrace();
}
}
接收方式:
public class insertData {
public void insertData(LinkedHashMap<String, List<String>> readMap) {
List<String> listEPC = new ArrayList<String>();
List<String> listTimeStamp = new ArrayList<String>();
List<Integer> listAntenna = new ArrayList<Integer>();
String EPC = null;
String TimeStamp = null;
Integer Antenna = null;
listEPC = readMap.get("epcs");
listTimeStamp = readMap.get("timestamps");
listAntenna = readMap.get("antennas"); //error message here
for(int i=0; i<readMap.size(); i++){
EPC = listEPC.get(i);
TimeStamp = listTimeStamp.get(i);
Antenna = listAntenna.get(i);
System.out.println("Entry " + i );
System.out.println("Values: " + EPC + TimeStamp + Antenna);
}
}
}
仅当我将整数的所有实例更改为字符串时,此代码才有效,这不是我在实际代码中想要的。为什么会这样?我该如何解决这个问题?
最佳答案
您无法分配 List<String>
到 List<Integer>
。这些元素是根本不同的类型。
您需要构建一个新的 List
:
List<Integer> listOfIntegers = new ArrayList<>();
for (String entry : listOfStrings) {
listOfIntegers.add(Integer.valueOf(entry);
}
当然,您还需要处理列表元素无法解析为整数的可能性。
<小时/>但是,您只是通过将所有内容填充到单个映射中来丢弃类型信息。最好分别传递三个列表:
insertData(listEPC, listTimestamp, listAntenna);
然后您可以在方法签名中使用不同的列表类型:
void insertData(
List<String> listEPC,
List<String> listTimestamp,
List<Integer> listAntenna) { ... }
关于java - 为什么我无法将嵌入的 ArrayList<Integer> 分配给本地声明的 ArrayList<Integer>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36471145/