2016-08-16 28 views
0

我在我的小Java應用程序中發現了一個奇怪的現象(至少對我而言)。 我有一個app.jar從命令行運行來完成一項簡單的任務。任務是,從給定列表中找到重複值並將其刪除。該應用程序是使用JDK-7開發的,並使用JRE-7運行。在不同的機器上運行JAR的奇怪行爲

從我的電腦的命令行中一切正常,但是當我的虛擬機與Windows 7一樣運行相同的JAR並且具有相同的JRE時,它不會刪除重複項,也不會發生任何錯誤。

這裏是我的代碼:

public List<String> removeDuplicatedFin(List<String> coreList, 
      Map<String, String> strToRemoveMap) { 
     for (int y = 0; y < coreList.size(); y++) { 
      String str = coreList.get(y).getPosts().get(0).getMyStr(); 
      String id = coreList.get(y).getPosts().get(0).getId(); 
      if (strToRemoveMap.get(str) != null 
        && strToRemoveMap.get(str).equals(idPost)) { 
       coreList.get(y).getPosts().remove(0); 
      } 
     } 
     return coreList; 
    } 

coreList是主列表

strToRemoveMap包含的值將被刪除

任何想法或者一些幫助嗎?

在此先感謝

+2

這個問題很可能出現在你沒有給我們顯示的一些代碼中...... –

+0

你能分享你的代碼嗎,你在哪裏刪除重複的東西? 你的代碼一定有問題。 – AmanSinghal

+0

@AmanSinghal 感謝您的回覆。 我會在家裏分享一次,但爲什麼在我的本地電腦上可以正常工作? 我猜如果代碼有問題,它應該到處失敗? – Arsench

回答

0

非常感謝您的回覆。最後,我發現,出現這種異常現象,因爲我用的例子

if(str1.equals(str2))

比較兩個字符串,我不知道爲什麼,當我改變

if(str1 == str2) 

它完美的作品。然而,在Eclipse和我的電腦中,它也與equals()一起工作。

我需要更多地瞭解這類事情,而不僅僅是。

謝謝你,祝你有美好的一天。

+0

我聽過的最令人驚訝的事情... –

+0

@StefanHegny我試圖在Linux中運行它,在其他PC上也是如此,這對我來說也很奇怪:) – Arsench