ArrayList .contain 给出奇怪的输出

Posted

技术标签:

【中文标题】ArrayList .contain 给出奇怪的输出【英文标题】:ArrayList .contain giving strange output 【发布时间】:2014-10-29 07:07:40 【问题描述】:

谁能解释一下?我有一个带有字符串的arrayList。我正在使用 !arraylist.contain 来确保我不添加重复项。在下面的代码中,我显示了arraylist中的所有内容,然后使用!arraylist.contain检查arraylist中是否不存在相同的值

public ArrayList<String> getIsiXhosaRecordings(ArrayList<String> must_download, ArrayList<String> all_filenames)

    database = getReadableDatabase();

    for(int x = 0; x < all_filenames.size(); x++)
    
        System.out.println("All files: >>>"+all_filenames.get(x)+"<<<");
    

    String[] table_names = "Voice_exercise", "Lesson_exercise";
    for(int x = 0; x < table_names.length; x++)
    
        String SQL = "SELECT * FROM "+table_names[x];
        Cursor cursor = database.rawQuery(SQL, null);

        while(cursor.moveToNext())
        
            String audio_isixhosa = cursor.getString(cursor.getColumnIndex("audio_isixhosa"));
            if(!all_filenames.contains(audio_isixhosa));
            
                System.out.println("Audio file: >>>"+audio_isixhosa+"<<<");
            
        
    
    return must_download;

还有日志猫:

09-04 15:30:40.188: D/dalvikvm(14202): GC_CONCURRENT freed 65K, 9% free 9852K/10759K, paused 2ms+2ms, total 24ms
09-04 15:30:40.188: W/SQLiteConnectionPool(14202): A SQLiteConnection object for database '/data/data/com.example.molo/databases/molo.db' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
09-04 15:30:40.298: I/System.out(14202): All files: >>>clock.jpg<<<
09-04 15:30:40.298: I/System.out(14202): All files: >>>confident.jpg<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>correct.png<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>correct.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>crowd.jpg<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e001.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e003.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e004.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e005.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e007.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e008.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e009.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e010.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e011.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e012.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e013.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e014.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e015.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e016.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e017.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e018.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e019.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e020.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e021.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e022.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>e023.wav<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>goodbye.jpg<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>greeting.jpg<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>how.jpg<<<
09-04 15:30:40.308: I/System.out(14202): All files: >>>howareyou.jpg<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>images<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>incorrect.png<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>incorrect.wav<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>kioskmode<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>lock.png<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>map.jpg<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>molo.db<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>morning.jpg<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>pe.jpg<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>question.jpg<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>question2.jpg<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>sounds<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>stranger.jpg<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>thembi.jpg<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>unlock.png<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>webkit<<<
09-04 15:30:40.318: I/System.out(14202): All files: >>>what.jpg<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>who.jpg<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>why.jpg<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>world.jpg<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x001.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x002.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x003.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x004.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x005.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x006.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x007.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x008.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x009.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x010.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x011.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x012.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x013.wav<<<
09-04 15:30:40.328: I/System.out(14202): All files: >>>x014.wav<<<
09-04 15:30:40.338: I/System.out(14202): All files: >>>x015.wav<<<
09-04 15:30:40.338: I/System.out(14202): All files: >>>x016.wav<<<
09-04 15:30:40.338: I/System.out(14202): All files: >>>x017.wav<<<
09-04 15:30:40.338: I/System.out(14202): All files: >>>x018.wav<<<
09-04 15:30:40.338: I/System.out(14202): All files: >>>x019.wav<<<
09-04 15:30:40.338: I/System.out(14202): All files: >>>x020.wav<<<
09-04 15:30:40.338: I/System.out(14202): All files: >>>x021.wav<<<
09-04 15:30:40.338: I/System.out(14202): All files: >>>x022.wav<<<
09-04 15:30:40.338: I/System.out(14202): All files: >>>x023.wav<<<
09-04 15:30:40.338: I/System.out(14202): Audio file: >>>x001.wav<<<
09-04 15:30:40.338: I/System.out(14202): Audio file: >>>x004.wav<<<
09-04 15:30:40.338: I/System.out(14202): Audio file: >>>x008.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x005.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x010.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x019.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x020.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x021.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x001.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x002.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x003.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x004.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x005.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x006.wav<<<
09-04 15:30:40.348: I/System.out(14202): Audio file: >>>x007.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x008.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x009.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x010.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x012.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x013.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x014.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x015.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x016.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x017.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x018.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x022.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>x023.wav<<<
09-04 15:30:40.358: I/System.out(14202): Audio file: >>>baboon.wav<<<
09-04 15:35:40.068: W/IInputConnectionWrapper(14202): getSelectedText on inactive InputConnection
09-04 15:35:40.068: W/IInputConnectionWrapper(14202): setComposingText on inactive InputConnection
09-04 15:35:40.068: W/IInputConnectionWrapper(14202): getExtractedText on inactive InputConnection

我添加了“>>>”和“为什么在 all_filenames.contains 以及 !all_filenames.conatins 中列出了相同的值?我试过让每个.toString() 得到相同的结果。我还对类似的文件名使用了类似的方法,效果很好。

谢谢

【问题讨论】:

【参考方案1】:

if 后面的分号结束语句

if(!all_filenames.contains(audio_isixhosa));
 // <-- new block separate from if.

所以主体是一个空块。去掉分号。

if(!all_filenames.contains(audio_isixhosa)) 

【讨论】:

这个很难发现! @Elliott - 好一个!

以上是关于ArrayList .contain 给出奇怪的输出的主要内容,如果未能解决你的问题,请参考以下文章

HashSet的contains()和ArrayList的contains()方法哪个更快一些?

Java ArrayList:当arraylist包含给定对象时,contains()方法返回false

ArrayList 的自定义 Contains 方法

ArrayList 的 contains() 方法如何评估对象?

在带有整数数组的 ArrayList 上使用 contains

ArrayList.contains() 方法实现方式