我已经用Java编写了以下代码,并尝试将其转换为Java 8。代码对输入(由createTempList方法创建的List)和输出(其键为字符串的第一个小数点,值为字符串的其他小数点)的映射按预期工作
public static void main(String[] args) { List<String> tempList = createTempList(); createMap8(tempList); } public static Map<String,List<String>> createMap8(final List<String> tempList) { Map<String,List<String>> vlanFoos = new HashMap<String,List<String>>(); for(int i=0; i< tempList.size(); i++) { String[] idsI = tempList.get(i).split("\\."); String vlanI = idsI[0]; List<String> fooList = new ArrayList<String>(); for(int j = 0 ; j < tempList.size() ; j ++) { String foo = ""; String[] idsJ = tempList.get(j).split("\\."); String vlanJ = idsJ[0]; if(vlanI.equals(vlanJ)) { for(int k = 1; k < idsJ.length; k++) { foo = foo + idsJ[k]; if(idsJ.length - k != 1) { foo = foo + "."; } } } if(!foo.isEmpty()) { fooList.add(foo); } } vlanFoos.put(vlanI, fooList); } return vlanFoos; }
输入:
private static List<String> createTempList() { List<String> tempList = new ArrayList<String>(); tempList.add("1.24.75.13.45.91.0"); tempList.add("1.88.213.110.66.182.127"); tempList.add("1579.204.45.224.38.12.161"); tempList.add("1580.204.45.224.38.12.161"); tempList.add("21.204.45.224.38.12.161"); tempList.add("39.204.45.224.38.12.161"); tempList.add("5.12.244.213.2.178.192"); tempList.add("5.204.45.224.38.12.161"); tempList.add("5.212.202.109.116.154.217"); tempList.add("5.212.202.109.116.154.218"); tempList.add("5.40.153.58.148.24.67"); tempList.add("5.76.177.205.33.164.80"); tempList.add("5.84.236.47.13.223.64"); tempList.add("5.88.213.110.66.182.128"); return tempList; }
输出:
{1=[24.75.13.45.91.0, 88.213.110.66.182.127],
1579=[204.45.224.38.12.161],
5=[12.244.213.2.178.192, 204.45.224.38.12.161, 212.202.109.116.154.217, 212.202.109.116.154.218, 40.153.58.148.24.67, 76.177.205.33.164.80, 84.236.47.13.223.64, 88.213.110.66.182.128],
39=[204.45.224.38.12.161],
1580=[204.45.224.38.12.161],
21=[204.45.224.38.12.161]}
[我已经用Java编写了以下代码,并试图将其转换为Java8。该代码对输入(由createTempList方法创建的List)和输出(键为1的映射…)按预期工作。 >
我建议您创建另一个类来进行字符串分析:
// please give this a better name!
// I don't know what the numbers mean, but you should!
class MyObject {
private String key;
private String value;
public String getKey() {
return key;
}
public String getValue() {
return value;
}
public MyObject(String s) {
// here I split the string into the first and the rest
String[] parts = s.split("\\.");
key = parts[0];
value = s.substring(key.length() + 1);
}
}
这应该起作用: