国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java for循環(huán)每次都通過(guò)list.size()和 string.length()獲取大小性能

這篇具有很好參考價(jià)值的文章主要介紹了Java for循環(huán)每次都通過(guò)list.size()和 string.length()獲取大小性能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

有人說(shuō)在for循環(huán)之前用一個(gè)局部變量先獲取到list.size()、str.length(),然后在for循環(huán)的判斷條件里通過(guò)這個(gè)局部變量替換list.size()、str.length()會(huì)節(jié)省數(shù)據(jù)計(jì)算的時(shí)間。事實(shí)真的是這樣嗎?下面就為大家解答這個(gè)問(wèn)題。

說(shuō)明:此文章針對(duì)Android SDK 進(jìn)行說(shuō)明。
List.size()

首先我們看一下List接口,我們知道.size()方法是List接口的一個(gè)方法,返回一個(gè)int類(lèi)型的值。

public interface List<E> extends Collection<E> {
    //省略部分代碼...
    
    /**
     * Returns the number of elements in this {@code List}.
     *
     * @return the number of elements in this {@code List}.
     */
    public int size();
    
    //省略部分代碼...
}



接口中的方法都是沒(méi)有具體實(shí)現(xiàn)的,我們下面看一下List的實(shí)現(xiàn)類(lèi)ArrayList(LinkList也一樣,這里講ArrayList)。我們先看下ArrayList類(lèi)中的size()方法是如何實(shí)現(xiàn)的:
?

public class ArrayList<E> extends AbstractList<E> implements Cloneable, Serializable, RandomAccess {

    //省略部分代碼...
    /**
     * Returns the number of elements in this {@code ArrayList}.
     *
     * @return the number of elements in this {@code ArrayList}.
     */
    @Override public int size() {
        return size;
    }
    //省略部分代碼...
}

Java for循環(huán)每次都通過(guò)list.size()和 string.length()獲取大小性能,list,windows,數(shù)據(jù)結(jié)構(gòu)



我們看到ArrayList里的size()方法直接return了一個(gè)size,通過(guò)查看發(fā)現(xiàn)size是ArrayList類(lèi)中的一個(gè)int類(lèi)型的成員變量,代表list結(jié)合中的元素?cái)?shù)量。
?

    /**
     * The number of elements in this list.
     */
    int size;



通過(guò)跟蹤size變量發(fā)現(xiàn)在ArrayList類(lèi)中的add,remove方法中都會(huì)動(dòng)態(tài)改變size的大小。
?

Java for循環(huán)每次都通過(guò)list.size()和 string.length()獲取大小性能,list,windows,數(shù)據(jù)結(jié)構(gòu)

 /**
     * Adds the specified object at the end of this {@code ArrayList}.
     *
     * @param object
     *            the object to add.
     * @return always true
     */
    @Override public boolean add(E object) {
        Object[] a = array;
        int s = size;
        if (s == a.length) {
            Object[] newArray = new Object[s +
                    (s < (MIN_CAPACITY_INCREMENT / 2) ?
                     MIN_CAPACITY_INCREMENT : s >> 1)];
            System.arraycopy(a, 0, newArray, 0, s);
            array = a = newArray;
        }
        a[s] = object;
        size = s + 1; // 添加元素size增加
        modCount++;
        return true;
    }
...
    /**
     * Removes the object at the specified location from this list.
     *
     * @param index
     *            the index of the object to remove.
     * @return the removed object.
     * @throws IndexOutOfBoundsException
     *             when {@code location < 0 || location >= size()}
     */
    @Override public E remove(int index) {
        Object[] a = array;
        int s = size;
        if (index >= s) {
            throwIndexOutOfBoundsException(index, s);
        }
        @SuppressWarnings("unchecked") E result = (E) a[index];
        System.arraycopy(a, index + 1, a, index, --s - index); //刪除元素 size--
        a[s] = null;  // Prevent memory leak
        size = s;
        modCount++;
        return result;
    }

Java for循環(huán)每次都通過(guò)list.size()和 string.length()獲取大小性能,list,windows,數(shù)據(jù)結(jié)構(gòu)



通過(guò)上述代碼我們知道通過(guò)ArrayList中的.size()方法獲取集合長(zhǎng)度,會(huì)直接返回一個(gè)集合元素?cái)?shù)量的變量值,而不會(huì)每次調(diào)用size()方法都重新計(jì)算下集合的元素?cái)?shù)量再返回。下面我們?cè)诳聪耂tring.length()。
String.Length()

我們看下java.lang包下得String類(lèi),首先找到String類(lèi)中的.length()方法:

Java for循環(huán)每次都通過(guò)list.size()和 string.length()獲取大小性能,list,windows,數(shù)據(jù)結(jié)構(gòu)

/**
 * An immutable sequence of UTF-16 {@code char}s.
 * See {@link Character} for details about the relationship between {@code char} and
 * Unicode code points.
 *
 * @see StringBuffer
 * @see StringBuilder
 * @see Charset
 * @since 1.0
 */
public final class String implements Serializable, Comparable<String>, CharSequence {
    //省略部分代碼...
    
     private final int count;

    //省略部分代碼...
    
    /**
     * Returns the number of {@code char}s in this string. If this string contains surrogate pairs,
     * this is not the same as the number of code points.
     */
    public int length() {
        return count;
    }
    
    //省略部分代碼...
}

Java for循環(huán)每次都通過(guò)list.size()和 string.length()獲取大小性能,list,windows,數(shù)據(jù)結(jié)構(gòu)



我們發(fā)現(xiàn)跟ArrayList中的size()方法一樣,返回了一個(gè)int類(lèi)型的成員變量count。這個(gè)count是怎么賦值的我也不清楚,有興趣的可以去研究一下。

#總結(jié)
綜上所述,我們就可以知道List.size()和String.length()方法都是直接返回一個(gè)int類(lèi)型變量值,而不會(huì)花費(fèi)時(shí)間再去計(jì)算大小后返回,所以放心的去使用size()和length()方法吧。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-702570.html

到了這里,關(guān)于Java for循環(huán)每次都通過(guò)list.size()和 string.length()獲取大小性能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java中通過(guò)List中的stream流去匹配相同的字段去賦值,避免for循環(huán)去查詢(xún)數(shù)據(jù)庫(kù)進(jìn)行賦值操作

    Q :上面兩個(gè)列表怎么使用流,根據(jù)equipmentDeviceMessageInfo中的phone字段去匹配userList 中的phone字段再獲取userList 中是name賦值給equipmentDeviceMessageInfo 中的name。 A :以前的寫(xiě)法是通過(guò)for循環(huán)遍歷一個(gè)一個(gè)去查詢(xún)賦值,這樣的話如果數(shù)據(jù)多的話一個(gè)一個(gè)遍歷會(huì)查詢(xún)的話肯定是很慢的,

    2024年02月07日
    瀏覽(25)
  • Java-json相關(guān)轉(zhuǎn)換,JSONObject與實(shí)體類(lèi)/map互轉(zhuǎn)、List/List<map>和JSONArray互轉(zhuǎn)、獲取JSONObject中的key value、字符串String轉(zhuǎn)換等

    博客背景是Java開(kāi)發(fā)。json相關(guān)的轉(zhuǎn)換、取值等在日常開(kāi)發(fā)中經(jīng)常使用,但有時(shí)候還是會(huì)忘記or遇到些奇奇怪怪的問(wèn)題。以此記錄,提醒自己~不定期更新~ 實(shí)體類(lèi)和JSONObject互轉(zhuǎn) Map和JSONObject互轉(zhuǎn) String轉(zhuǎn)JSONObject 實(shí)體類(lèi)轉(zhuǎn)JSON字符串時(shí)不過(guò)濾NULL空值 獲取JSONObject中的key value List和

    2024年02月12日
    瀏覽(29)
  • Jmeter-BeanShell腳本中for循環(huán)里面使用random隨機(jī)數(shù)函數(shù),每次生成的都一樣

    預(yù)想的是每次循環(huán)生成的隨機(jī)數(shù)不一樣,但實(shí)際使用Random函數(shù)生成的是重復(fù)的。 以下是部分原代碼: 生成的updateList為: [{“id”:235214718648462,“dataId”:null,“data”:6708,“type”:“number”}, {“id”:318239582208002,“dataId”:333989510397954,“data”:6708,“type”:“number”}, {“id”:33398948

    2024年01月20日
    瀏覽(23)
  • 拋棄for循環(huán)遍歷list

    Java 8 API添加了一個(gè)新的抽象稱(chēng)為流Stream,可以讓你以一種聲明的方式處理數(shù)據(jù)。 Stream 使用一種類(lèi)似用 SQL 語(yǔ)句從數(shù)據(jù)庫(kù)查詢(xún)數(shù)據(jù)的直觀方式來(lái)提供一種對(duì) Java 集合運(yùn)算和表達(dá)的高階抽象。 filter filter:過(guò)濾,就是過(guò)濾器,符合條件的通過(guò),不符合條件的過(guò)濾掉 map map:映射,

    2024年02月20日
    瀏覽(15)
  • 【Python】列表 List ⑦ ( 列表遍歷 | 使用 while 循環(huán)遍歷列表 | 使用 for 循環(huán)遍歷列表 | while 循環(huán) 與 for 循環(huán)對(duì)比 )

    將 列表 容器 中的數(shù)據(jù)元素 , 依次逐個(gè)取出進(jìn)行處理的操作 , 稱(chēng)為 列表的遍歷 ; 使用 while 循環(huán) 遍歷 列表容器 : 元素訪問(wèn)方式 : 使用 下標(biāo)索引 訪問(wèn) 列表中的元素 ; 循環(huán)控制 : 循環(huán)控制變量 : 用于指示當(dāng)前循環(huán)的 下標(biāo)索引 ; 循環(huán)條件 : 設(shè)置為 循環(huán)控制變量 ( 下標(biāo)索引 ) 列表

    2024年02月06日
    瀏覽(35)
  • Python學(xué)習(xí)筆記:List、Tuple、for循環(huán)

    Python學(xué)習(xí)筆記:List、Tuple、for循環(huán)

    1.list ? 2.matrix 其實(shí)就是list嵌套,可以使用雙重for遍歷,所包含方法與list一致 3.for循環(huán)實(shí)例:隨機(jī)生成一個(gè)固定大小的list,并找到list中最大的數(shù)和對(duì)應(yīng)的index 4.for循環(huán)實(shí)例:刪除list中重復(fù)的元素 ?5.tuple tuple不可變,但是可以多個(gè)tuple拼接組合 6.dictionary {key:value} ?7.dictionary

    2024年02月14日
    瀏覽(19)
  • 【C++】sizeof()、size()、length()的用法及區(qū)別

    在c++中,length()只是用來(lái)獲取字符串的長(zhǎng)度。在獲取字符串長(zhǎng)度的時(shí)候size()和length()函數(shù)作用相同。 size函數(shù)除了可以獲取字符串長(zhǎng)度外,還可以獲取vector類(lèi)型的長(zhǎng)度。 在c++中,sizeof()用于獲取數(shù)據(jù)類(lèi)型或者變量所占內(nèi)存空間的大小??梢酝ㄟ^(guò)sizeof計(jì)算獲取數(shù)組元素個(gè)數(shù)。

    2024年02月14日
    瀏覽(51)
  • C++中sizeof()、size()、strlen()、length()詳解

    1、size 是一個(gè) 函數(shù) ,它是在程序運(yùn)行時(shí)才會(huì)計(jì)算, 用來(lái)求數(shù)組或容器中元素的個(gè)數(shù) 。 在字符串string中它與length的作用相同,只是length只能應(yīng)用于string中,而不能應(yīng)用于STL的容器中 2、sizeof 為 運(yùn)算符 , 其結(jié)果是求對(duì)應(yīng)參數(shù)的字節(jié)大小 ,它的值是在編譯的時(shí)候就計(jì)算完成了

    2024年04月16日
    瀏覽(18)
  • mac 每次啟動(dòng)終端都會(huì)提示 zsh compinit: insecure directories and files, run compaudit for list.Ignore insecure

    mac 每次啟動(dòng)終端都會(huì)提示 zsh compinit: insecure directories and files, run compaudit for list.Ignore insecure

    這個(gè)問(wèn)題是因?yàn)槟膠sh配置使用了某些不安全的目錄或文件。為了解決這個(gè)問(wèn)題,您可以執(zhí)行以下步驟: 打開(kāi)終端并輸入以下命令: ? 這個(gè)命令會(huì)列出所有不安全的目錄和文件,其中一些可能需要更改權(quán)限。 修復(fù)不安全的目錄和文件: 使用以下命令修復(fù)不安全的目錄和文件

    2024年02月07日
    瀏覽(42)
  • C語(yǔ)言 strlen、length、size、sizeof的區(qū)別

    strlen 是 C 語(yǔ)言中的函數(shù),用于計(jì)算字符串的長(zhǎng)度(不包括字符串末尾的\\\'\\0\\\')。 僅適用于以 null 字符結(jié)尾的字符串,即 C-style 字符串。 返回值類(lèi)型為 size_t 。 length 和 size 都是 C++ 中 string 類(lèi)型的成員函數(shù),用于返回字符串的長(zhǎng)度。 可以適用于任何字符串類(lèi)型,包括 std::strin

    2024年02月06日
    瀏覽(24)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包