2011-07-31 67 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()。