簡體   English   中英

使用contains()在Java ArrayList中檢查零

[英]Checking for zero in Java ArrayList using contains()

我有這個代碼片段,基本上檢查long整數的ArrayList中的0值。

import java.io.*;
import java.util.*;

class main
{
    public static void main (String[] args) throws java.lang.Exception
    {
        long zero = 0;

        ArrayList<Long> alist = new ArrayList();        
        alist.add (zero);

        if (alist.contains(0))
            System.out.println ("contains zero");
        else
            System.out.println ("contains no zero");
    }
}

我得到的輸出contains no zero 相當令人不安 這是一個錯誤還是預期的行為?

將此邏輯檢查更改為: alist.contains(0L) 此行為與自動裝箱/取消裝箱有關。 int被裝箱為Integerlong被裝箱為Long 在你的列表中你放了一個long(盒裝到Long ),然后你搜索一個int(盒裝到一個Integer )...所以你找不到它。

peter.petrov解釋了導致錯誤輸出的原因,我只想補充一點,盡量避免使用硬編碼,直到有必要為止。 如果您將其編碼為if (alist.contains(zero)) ,則可以獲得所需的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM