Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Google Guava从用于索引的文件中读取导致的NullPointerException_Java_Indexing_Guava_Bufferedreader_Multimap - Fatal编程技术网

Java 使用Google Guava从用于索引的文件中读取导致的NullPointerException

Java 使用Google Guava从用于索引的文件中读取导致的NullPointerException,java,indexing,guava,bufferedreader,multimap,Java,Indexing,Guava,Bufferedreader,Multimap,我正在与GoogleGuava合作使用这样的多重映射,例如{S1.E11=[S2.E236],S1.E108=[S2.E371]}。但我有个问题。我想从文件中读取映射实体,并将它们放入我的多重映射中,这类似于使用hashmaps进行索引。下面是我的文件mapping.csv: S1.E10;S2.E235;0.86 S1.E108;S2.E371;0.99 S1.E109;S2.E372;0.99 S1.E11;S2.E236;0.86 S1.E113;S2.E51;0.73 下面是我的Jav

我正在与GoogleGuava合作使用这样的多重映射,例如{S1.E11=[S2.E236],S1.E108=[S2.E371]}。但我有个问题。我想从文件中读取映射实体,并将它们放入我的多重映射中,这类似于使用hashmaps进行索引。下面是我的文件mapping.csv:

S1.E10;S2.E235;0.86
S1.E108;S2.E371;0.99
S1.E109;S2.E372;0.99
S1.E11;S2.E236;0.86
S1.E113;S2.E51;0.73
下面是我的Java代码:

/*
*要更改此许可证标题,请在“项目属性”中选择“许可证标题”。
*要更改此模板文件,请选择工具|模板
*然后在编辑器中打开模板。
*/
包索引;
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入com.google.common.collect.ArrayListMultimap;
导入com.google.common.collect.Multimap;
导入java.util.ArrayList;
导入java.util.Collection;
导入java.util.Iterator;
导入java.util.Set;
公共类索引{
公共静态字符串getKeyOfValue(字符串值,Multimap multiM){
String keyOfValue=新字符串();
Set setKeys=multiM.keySet();
用于(字符串键:设置键){
if(multi.get(key).contains(value)){
keyOfValue=key;
}
}
返回键值;
}
公共静态布尔removeValueOfKey(字符串键、字符串值、Multimap multiM){
集合值=multiM.get(键);
for(Iterator Iterator=values.Iterator();Iterator.hasNext();){
String元素=迭代器.next();
if(值等于(元素)){
值。删除(元素);
返回true;
}
}
返回false;
}
/*e0设备代表de e1*/
公共静态void caseRptRpt(字符串e0、字符串e1、多重映射多重映射多重映射){
多路输入(e0,e1);
收集值;
//e0侯爵通信代表de e1
值=多重获取(e1);
for(Iterator Iterator=values.Iterator();Iterator.hasNext();){
String元素=迭代器.next();
[损坏]表示
多重输入(e0,元件);
}
//供应商e1代表性供应商代表性供应商
多重移动电话(e1);
}
公共静态void main(字符串[]args)引发IOException{
//此处的TODO代码应用程序逻辑
Multimap Multimap=ArrayListMultimap.create();
BufferedReader br=新的BufferedReader(新文件读取器(“mapping.csv”);
字符串行=null;
字符串[]小报;
字符串[][]数组=新字符串[5][5];
试一试{
而(((line=br.readLine())!=null)){
line=br.readLine();
//line=line.trim();
tabLine=行。拆分(“;”);
//系统输出打印(tabLine[0]);
//系统输出打印(“”);
//System.out.println(表格[1]);
如果(!multiMap.isEmpty()){
//si e0 est代表和e1 est代表
if(multiMap.containsKey(表行[0])&&multiMap.containsKey(表行[1]))
&&!(multiMap.containsValue(表行[0])| | multiMap.containsValue(表行[1])){
//e1设备代表de e0
caseRptRpt(表格[1],表格[0],多重地图);
}//Si e0EST代表Et E1 EST代表E.PAR UNE E E
else if(multiMap.containsKey(表行[0])&multiMap.containsValue(表行[1]))
&&!(multiMap.containsValue(表行[0])| | multiMap.containsKey(表行[1]))
&&!(multiMap.ContaineSentry(表格[0],表格[1])){
/损坏者代表E.PAR E0
multiMap.put(tabLine[0],tabLine[1]);
E/DES代表E
移除键的值(getKeyOfValue(tabLine[1],multiMap),tabLine[1],multiMap);
} // Simon SeE0EST代表E.Par e et E1 EST表示
else if(multiMap.containsValue(表行[0])&multiMap.containsKey(表行[1]))
&&!(multiMap.containsKey(表行[0])| | multiMap.containsValue(表行[1]))
&&!(multiMap.ContainerSentry(表格[1],表格[0])){
/损坏者E0代表EPAR E1
multiMap.put(tabLine[1],tabLine[0]);
移除键的值(getKeyOfValue(tabLine[0],multiMap),tabLine[0],multiMap);
}//Si E0 Et E1 SONT代表E微分方程
else if(multiMap.containsValue(表行[0])&multiMap.containsValue(表行[1]))
&&!(multiMap.containsKey(tabLine[0])| | multiMap.containsKey(tabLine[1]))
&&!(getKeyOfValue(tabLine[0],multiMap)。等于(getKeyOfValue(tabLine[1],multiMap))){
//Maqer-E0损坏代表EPAR E1
put(getKeyOfValue(tabLine[1],multiMap),tabLine[0]);
移除键的值(getKeyOfValue(tabLine[0],multiMap),tabLine[0],multiMap);
}//else if(multiMap.isEmpty()){
//multiMap.put(tabLine[0],tabLine[1]);
//}
}否则{
multiMap.put(tabLine[0],tabLine[1]);
}
}
}捕获(例外e){
System.err.println(“错误:+e”);
e、 printStackTrace();
}
//到这里
System.out.println(多重映射);
}
}
当我运行它时,我得到的是:

运行:
错误:java.lang.NullPointerException
java.lang.NullPointerException
位于index.index.main(index.java:74)
{S1.E108=[S2.E371]}
日分
        while (((line = br.readLine()) != null)) {
            line = br.readLine();