亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何確定數組是否包含Java中的特定值?

如何確定數組是否包含Java中的特定值?

qq_笑_17 2019-05-30 11:17:42
如何確定數組是否包含Java中的特定值?我有一個String[]具有這樣的價值:public static final String[] VALUES = new String[] {"AB","BC","CD","AE"};給出String s,有沒有一個好的方法來測試VALUES含s?
查看完整描述

4 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

只是為了開始清理代碼。我們已(更正):

public static final String[] VALUES = new String[] {"AB","BC","CD","AE"};

這是一個可變的靜態,FindBugs會告訴你非常淘氣。應保密:

private static final String[] VALUES = new String[] {"AB","BC","CD","AE"};

(注意,您實際上可以刪除new String[];(比特)

因此,引用數組是不好的,特別是在這里我們需要一個集合:

private static final Set<String> VALUES = new HashSet<String>(Arrays.asList(
     new String[] {"AB","BC","CD","AE"}));

(像我這樣多疑的人,如果被包裹在里面,可能會感到更自在。Collections.unmodifiableSet-甚至可以公開。

“給定字符串s,是否有一種測試值是否包含s的好方法?”

VALUES.contains(s)

o(1)。

最新情況:從JavaSE 9開始Set.of.

private static final Set<String> VALUES = Set.of(
    "AB","BC","CD","AE");

這個右型不變O(1)簡練。漂亮的,美麗的。

(就品牌而言,可以預見的是,集合API仍然缺少不可變的集合類型,語法仍然過于冗長,不適合我的口味。)


查看完整回答
反對 回復 2019-05-30
?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

你可以用ArrayUtils.contains從…阿帕奇公域朗

public static boolean contains(Object[] array, Object objectToFind)

注意,此方法返回false如果傳遞的數組是null.

也有各種類型的基元數組可用的方法。

例子:

String[] fieldsToInclude = { "id", "name", "location" };if ( ArrayUtils.contains( fieldsToInclude, "id" ) ) {
    // Do some stuff.}


查看完整回答
反對 回復 2019-05-30
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

只需手工實現即可:

public static <T> boolean contains(final T[] array, final T v) {
    for (final T e : array)
        if (e == v || v != null && v.equals(e))
            return true;

    return false;}

改進:

這個v != null在該方法中,條件是恒定的。在方法調用期間,它總是計算為相同的布爾值。所以如果輸入array是很大的,只計算一次這個條件是更有效的,而且我們可以在for基于結果的循環。改良contains()方法:

public static <T> boolean contains2(final T[] array, final T v) {
    if (v == null) {
        for (final T e : array)
            if (e == null)
                return true;
    } 
    else {
        for (final T e : array)
            if (e == v || v.equals(e))
                return true;
    }

    return false;}


查看完整回答
反對 回復 2019-05-30
  • 4 回答
  • 0 關注
  • 983 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號