2011-07-31 106 views
0

我有一個文本文件,其中包含字段和值,如「ID:987654類型:活動ITEM:新..」 。每行包含一個項目和不同的屬性。現在我想將這個文本文件與已經具有這些值的HashMap進行比較。什麼是最好的方式來比較它們。如何閱讀這個文本文件並與HashMap進行比較。任何幫助將不勝感激。比較HashMap與文本文件

非常感謝。

+0

你的文件格式如何?這是每行一個項目嗎?此外,您是否有時在「ITEM:帶空格的新商品」等字段中有空格。最後,你如何格式化HashMap?關鍵是什麼,價值是什麼?它是ID作爲鍵和包含TYPE和ITEM作爲值的對象嗎?精心製作,以便我們可以更好地幫助你。 –

+0

是adam,HashMap 是這種格式。文本文件也有空格以及「:」分隔符。在文本文件中,每一行都是一個項目的詳細信息 – NewJavaBee

回答

0

使用java.util.Properties類讀取文件。這將創建一個帶有Hashtable的屬性對象。然後,您可以遍歷HashMap中的鍵並與Hashtable進行比較。

這應該是算法的起點。你自己把剩下的肉全部放在一邊。

+0

感謝Brett。我不確定在java中prpoerty是如何工作的,我會詳細講解它。但我有一個問題。這是否會在每行的HashTable中創建一個條目,我的意思是每個唯一的ID,它會在HashTable中創建一個條目。如果你可以幫我進一步處理這個問題 – NewJavaBee

+0

Hashtable和HashMap非常相似。閱讀此文檔(http://download.oracle.com/javase/6/docs/api/java/util/Hashtable.html,http://download.oracle.com/javase/6/docs/api/的java/UTIL/HashMap.html)。另請閱讀有關屬性的文檔。 是的,如果鍵(ID,TYPE,ITEM,...)是唯一的(每行一個),那麼在文本文件的每行屬性哈希表中將會有一個條目。 –

+0

我嘗試從Java的屬性,但它只加載道具中的第一項,我不打包獲得任何其他價值。有沒有其他的方式來遍歷它? – NewJavaBee

0

我會留給你閱讀文本文件(除非我失去了一些東西,像BufferedReader這樣的類應該適合你),但我會告訴你如何使用HashMap。有人已經提供了該文檔的鏈接。對於每個ID,你要這樣說

//do this for each ID you read - I'll suppose "id" is the ID and 
//"text" is the text (properties) associated with the ID on each iteration 
//of some kind of loop here 

    //search your HashMap for the id you just read 
    String value = map.get(id); 

    //if map doesn't contain ID 
    if (value == null) 
    { 
     //do whatever you need to do in this case 
    } 
    //if it does contain it 
    else 
    { 
     if (value.equals (text)) 
     { 
      //the text file had the same thing as your existing HashMap 
     } 
     else 
     { 
      //had something else 
     } 
    } 
1

加載文本文件到另一個HashMap中,使用任何語義是合適的,然後調用HashMap.equals()。