Iam嘗試將存在於文件中的內容插入到Hashmap中。我想出了一種方法來實現該目的。但是,我沒有獲得所需的輸出下面提到的是試圖將文件內容加載到散列表中的代碼。無法將文件的內容正確保存到哈希映射中
public static void main (String [] args)
{
try {
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new FileReader("xxxxxxx"));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
Map map = new HashMap();
System.out.println(fileData.toString());->(1)
StringTokenizer stringTokenizer = new
StringTokenizer(fileData.toString());
while (stringTokenizer.hasMoreTokens())
{
map.put(stringTokenizer.nextToken().toString(),stringTokenizer.nextToken().toString());
}
Iterator iterator = map.entrySet().iterator();
while(iterator.hasNext())
{
Map.Entry m = (Map.Entry)iterator.next();
System.out.println("key"+m.getKey());->(2)
System.out.println("value"+m.getValue());->(3)
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
當我從code.I提到等式1打印正在逐漸所需的輸出(即路徑作爲密鑰和散列作爲值):
C:\Users\rishii\Desktop\input_3\com.AmazingBullshit.Holy_1.03.apk
66ec456315a7e6c9338b0387171ca89e
C:\Users\rishii\Desktop\input_3\com.amazon.venezia_release
13.0003.844.1C_6430003104.apk
266796d1b8e2e016753ee3bf1b50e591
C:\Users\rishii\Desktop\input_3\com.android.browser_4.4.2-
eng.build.20150616.1901504.apk
4aa2091b0e21fc655e19d07e2ae20982
C:\Users\rishii\Desktop\input_3\com.android.calculator2_4.4.2-
eng.build.20150616.1901504.apk
85313ccbd39a43952906b70b941d321b
C:\Users\rishii\Desktop\input_3\com.android.calendar_4.4.2-
eng.build.20150616.1901504.apk
3c85cb87f2e134a4157e5f3747e4df1b
C:\Users\rishii\Desktop\input_3\com.android.camera2_2.0.002
(eng.build.ef73894.060315_142358-70)4.apk
482205cda6991f89fb35311dea668013
然而,當我保持它在哈希映射並試圖打印它(使用eq(2)和eq(3)),我得到了不同的輸出。
key:
dd383abe48e591f40504cbb4dff80958
value:
C:\Users\rishii\Desktop\input_3\com.android.quicksearchbox_4.4.2-
eng.build.20150616.1901504.apk
key:
482205cda6991f89fb35311dea668013
value:
C:\Users\rishii\Desktop\input_3\com.android.contacts_4.4.2-
eng.build.20150616.1901504.apk
key:
C:\Users\rishii\Desktop\input_3\com.AmazingHolyBull_1.03.apk
value:
66ec456315a7e6c9338b0387171ca89e
如果你能觀察輸出具有changed.Especially在上面的輸出,其中的「關鍵項是路徑」和「值項是哈希」的最後兩行。我無法弄清楚爲什麼HashMap的是給人一種怪異的output.I我期待的輸出,看起來像一個確切的原因:
鍵:.apk文件 值的路徑:將.apk文件的哈希值。 與第一個輸出類似。
下面附帶的是它在輸入文件中的方式。
C:\Users\rishii\Desktop\baal\apuslauncher-1.apk
af05322cf2c682e8c04a0fb9441867f1
C:\Users\rishii\Desktop\baal\apuslauncher-2.apk
af05322cf2c682e8c04a0fb9441867f1
C:\Users\rishii\Desktop\baal\apuslauncher.apk
af05322cf2c682e8c04a0fb9441867f1
任何建議將非常有幫助!
嘗試打印每次調用'stringTokenizer.nextToken()的輸出的toString()' – fRoStBiT
它看起來就像每一個值是在一個單獨的線。真的嗎?如果是這樣,不要將整個文件讀入內存,也不要使用'StringTokenizer'。只需使用['BufferedReader.readLine()'](https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine%28%29)方法即可。 ---另外,請不要使用StringBuffer,而應使用['StringBuilder'](http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html)。 ['StringBuffer']的Javadoc(http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html)這樣說。 – Andreas
@Andreas我想將它們保存到散列圖 –