java arraylist string_在Java ArrayList String中使用contains
你是對的。 ArrayList.contains()testingequals(),而不是對象標識:
返回true當且僅當此列表包含至less一個元素e,使得(o == null?e == null:o.equals(e))
如果你有一個NullPointerExceptionexception,請validation你是否在構造函數或聲明中初始化了你的列表。 例如:
private List rssFeedURLs = new ArrayList();
是的,這應該適用于string, 但如果你擔心重復使用Set 。 這個集合可以防止重復而不必做任何事情。 一個HashSet可以使用,但它是無序的,所以如果你想保持插入順序你使用LinkedHashSet 。
你是對的,它應該工作; 也許你忘了實例化一些東西。 你的代碼看起來像這樣嗎?
String rssFeedURL = "http://stackoverflow.com"; this.rssFeedURLS = new ArrayList(); this.rssFeedURLS.add(rssFeedURL); if(this.rssFeedURLs.contains(rssFeedURL)) { // this code will execute }
作為參考,請注意以下條件也將執行如果您將此代碼附加到上面:
String copyURL = new String(rssFeedURL); if(this.rssFeedURLs.contains(copyURL)) { // code will still execute because contains() checks equals() }
即使(rssFeedURL == copyURL)為false,rssFeedURL.equals(copyURL)也是如此。 包含方法關心equals方法。
也許你需要發布導致你的exception的代碼。 如果以上是你所有的,也許你只是沒有實際初始化數組。
使用包含在這里應該雖然工作。
你的問題不是很清楚。
你的代碼到底在做什么? 給更多的代碼。
你得到的錯誤是什么?
你說你得到一個空指針。 你不能得到一個空指針作為由contains()返回的值。
但是,如果您的列表尚未初始化,則可能會發生NullPointerException 。 現在通過閱讀你的問題,我會說,你在這里顯示的是正確的,但也許你沒有實例化列表。
要做到這一點(要添加一個提要的URL,如果它不在列表中):
if (!this.rssFeedURLs.contains(rssFeedURL)) { this.rssFeedURLs.add(rssFeedUrl); }
那么這個聲明會做:
private ArrayList rssFeedURLs = new ArrayList();
或者稍后初始化您的列表,但在嘗試訪問其方法之前:
rssFeedUrls = new ArrayList();
最后…你真的需要一個List嗎? 如果你不想重復,也許會更好。 如果保留sorting事項,請使用LinkedHashSet 。
正確…用string…當你偏離原語或string的時候事情就會改變,你需要實現hashcode / equals來獲得所需的效果。
編輯:初始化您的ArrayList然后嘗試添加一個項目。
你是對的 正如別人根據你的意見說,你可能沒有初始化你的ArrayList。
我的觀點是不同的:你聲稱你正在檢查重復,這就是為什么你調用contains方法。 嘗試使用HashSet 。 它應該更有效率 – 除非您需要保持URL的順序出于任何原因。
感謝大家回答如此之快。 我總是可以使用一個集合,但我現在有ArrayList的工作。 問題是,在包含ArrayList的類的構造函數中,我沒有說:
public RSS_Feed_Miner() { ... this.rssFeedURLs = new ArrayList(); ... }
D'哦! 星期五下午。
ArrayList newlyAddedTypes=new ArrayList(); ..... newlyAddedTypes.add("test1"); newlyAddedTypes.add("test1"); newlyAddedTypes.add("test2"); if(newlyAddedTypes.contain("test"){ //called here } else{ }
在下面的代碼中,我們將任務填充為arraylist,retrieveTaskidForDelete作為我們在任務填充的arraylist中添加值的方法,checkid是String.we需要檢查string值是否包含在arraylist中。
String checkid; ArrayList taskfilled=retrieveTaskidForDelete(); if(!taskfilled.contains(checkid)) { Toast.makeText(getContext(),"Yepiee Bingo"+ti.get(a),Toast.LENGTH_SHORT).show(); }
總結
以上是生活随笔為你收集整理的java arraylist string_在Java ArrayList String中使用contains的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机免费取名,电脑免费取名
- 下一篇: CNVD 与 CNNVD 的区别