最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的Collections類(lèi)的使用示例詳解

 更新時(shí)間:2022年12月12日 11:13:30   作者:從未止步..  
Collections類(lèi)提供了一些靜態(tài)方法,這些方法能夠?qū)ist集合實(shí)現(xiàn)常用的算法操作,這些算法是排序,填充,移位和查找等。本文將通過(guò)示例為大家詳細(xì)講講Collections類(lèi)的使用,需要的可以參考一下

Collections的常用方法及其簡(jiǎn)單使用

代碼如下:

package Collections;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Stack;

public class collections {
    public static void main(String[]args){
        int array[]={125,75,56,7};
        List<Integer> list=new ArrayList<>();
        for(int i=0;i<array.length;i++){
            list.add(array[i]);
        }
        Collections.sort(list);//sort()對(duì)集合中的元素進(jìn)行升序排序
        //binarySearch()采用折半查找在當(dāng)前集合中尋找目標(biāo)元素
        System.out.println("升序排序后,元素56的下標(biāo)是:"+Collections.binarySearch(list,56));//下標(biāo)從0開(kāi)始
        System.out.print("升序排序后集合中的元素是:");
        for(Integer i:list) {
            System.out.print(i+" ");
        }
        System.out.print("\n隨機(jī)排序后集合中的元素是:");
        Collections.shuffle(list);//shuffle()對(duì)集合中的元素進(jìn)行隨機(jī)排列
        for(Integer i:list){
            System.out.print(i+" ");
        }
        System.out.println("\n集合的最大值:"+Collections.max(list));//max()找到集合中元素的最大值
        System.out.println("集合中的最小值:"+Collections.min(list));//min()找到集合中元素的最小值
        System.out.print("逆序排列后集合中的元素是:");
        Collections.reverse(list);//reverse()將當(dāng)前排列好的元素進(jìn)行逆序排列
        for(Integer j:list){
            System.out.print(j+" ");
        }
        Collections.rotate(list,3);//將集合中的元素旋轉(zhuǎn)指定的距離
        System.out.print("\n將集合中的元素旋轉(zhuǎn)3之后集合為:");
        for(Integer j:list){
            System.out.print(j+" ");
        }
        List<Integer>list1=new ArrayList<>(10);
    }
}

輸出:

升序排序后,元素56的下標(biāo)是:1
升序排序后集合中的元素是:7 56 75 125 
隨機(jī)排序后集合中的元素是:125 75 56 7 
集合的最大值:125
集合中的最小值:7
逆序排列后集合中的元素是:7 56 75 125 
將集合中的元素旋轉(zhuǎn)3之后集合為:56 75 125 7

注:在執(zhí)行binarySearch方法對(duì)元素進(jìn)行折半查找前,先調(diào)用sort方法對(duì)集合中的元素進(jìn)行排序,有序且為順序存儲(chǔ)才能夠進(jìn)行折半查找,這是我們?cè)跀?shù)據(jù)結(jié)構(gòu)中就學(xué)習(xí)的,在java中同樣是如此

Collections.copy()方法

代碼如下:

package Collections;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class collections {
    public static void main(String[]args){
        int array[]={125,75,56,7};
        List<Integer> list=new ArrayList<>();
        List<Integer>list1=new ArrayList<>(4);
        for(int i=0;i<array.length;i++){
            list.add(array[i]);
        }
        Collections.copy(list1,list);
        for(Integer i:list1) {
            System.out.print(i+" ");
        }
    }
}

報(bào)錯(cuò):

Exception in thread "main" java.lang.IndexOutOfBoundsException: Source does not fit in dest
    at java.base/java.util.Collections.copy(Collections.java:561)
    at Collections.collections.main(collections.java:16)

在我們所編寫(xiě)的程序中暫時(shí)為發(fā)現(xiàn)語(yǔ)法性的問(wèn)題,點(diǎn)開(kāi)561行,copy方法的源碼:

通過(guò)看源碼,發(fā)現(xiàn)這個(gè)方法是有目標(biāo)數(shù)組和源數(shù)組的元素個(gè)數(shù)進(jìn)行比較的操作,如果目標(biāo)數(shù)組的元素個(gè)數(shù)小于源數(shù)組的元素個(gè)數(shù),則拋出異常:下標(biāo)越界。

再返回到我們的java代碼,list1在最開(kāi)始我們就設(shè)置了它的初始容量為4,那么為什么還會(huì)出現(xiàn)下標(biāo)越界問(wèn)題呀?

通過(guò)輸出list1的長(zhǎng)度,去查看是否是初始化操作有問(wèn)題:

System.out.println(list1.size());

輸出為0,并不是我們最初設(shè)定的4

指定的list1容量為4,只是指定了list1當(dāng)前能夠容納的元素個(gè)數(shù)為4,即指定了list1的容納能力(int capacity)為4,并不代表list1中有了四個(gè)實(shí)際的元素

我們并不能通過(guò)初始化操作去改變size的大小,初始化時(shí)實(shí)際元素個(gè)數(shù)(size)永遠(yuǎn)為0,只有在進(jìn)行add()和remove()等相關(guān)操作時(shí),實(shí)際元素個(gè)數(shù)才會(huì)發(fā)生改變

解決辦法即為:給目標(biāo)集合初始化一定的長(zhǎng)度,可使用0/null實(shí)現(xiàn)數(shù)據(jù)的初始化操作

修改如下:

import java.util.List;
public class collections {
    public static void main(String[]args){
        int array[]={125,75,56,7};
        List<Integer> list=new ArrayList<>();
        List<Integer>list1=new ArrayList<>(3);
        for(int i=0;i<array.length;i++){
            list.add(array[i]);
        }
        for(int i=0;i<array.length;i++){
            list1.add(0);
        }
       System.out.println("復(fù)制完成后list1中的元素如下:");
        Collections.copy(list1,list);
        for(Integer i:list1) {
            System.out.print(i+" ");
        }
    }
}

輸出:

復(fù)制完成后list1中的元素如下:
125 75 56 7 

在修改的過(guò)程中,我將capacity的值改變?yōu)樾∮跀?shù)組長(zhǎng)度的,因此看來(lái)給list1指定容量在這里是沒(méi)什么用,但該操作在某些時(shí)候可提高效率。

ArrayList指定初始容量可提高效率

ArrayList是List接口的可變數(shù)組的實(shí)現(xiàn)。實(shí)現(xiàn)了所有可選列表操作,并允許包括 null 在內(nèi)的所有元素,除了實(shí)現(xiàn) List 接口外,此類(lèi)還提供一些方法來(lái)操作內(nèi)部用來(lái)存儲(chǔ)列表的數(shù)組的大小,每個(gè)ArrayList實(shí)例都有一個(gè)容量,初始化容量10,該容量是指用來(lái)存儲(chǔ)列表元素的數(shù)組的大小。它總是至少等于列表的大小,隨著向ArrayList中不斷添加元素,其容量也自動(dòng)增長(zhǎng),自動(dòng)增長(zhǎng)會(huì)帶來(lái)數(shù)據(jù)向新數(shù)組的重新拷貝,因此,如果可預(yù)知數(shù)據(jù)量的多少,可在構(gòu)造ArrayList時(shí)指定其容量。在添加大量元素前,應(yīng)用程序也可以使用ensureCapacity操作來(lái)增加ArrayList實(shí)例的容量,這可以減少遞增式再分配的數(shù)量

以上就是Java中的Collections類(lèi)的使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Java Collections類(lèi)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 為什么ConcurrentHashMap的key value不能為null,map可以?

    為什么ConcurrentHashMap的key value不能為null,map可以?

    這篇文章主要介紹了為什么ConcurrentHashMap的key value不能為null,map可以呢?具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • Java中的共享鎖CountDownLatch及源碼解析

    Java中的共享鎖CountDownLatch及源碼解析

    這篇文章主要介紹了Java中的共享鎖CountDownLatch及源碼解析,CountDownLatch是一種同步輔助工具,允許一個(gè)或多個(gè)線程等待,直到在其它線程中執(zhí)行的一組操作完成;CountDownLatch使用指定的計(jì)數(shù)初始化,需要的朋友可以參考下
    2023-11-11
  • CountDownLatch同步工具類(lèi)使用詳解

    CountDownLatch同步工具類(lèi)使用詳解

    這篇文章主要為大家詳細(xì)介紹了CountDownLatch的使用說(shuō)明,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Spring?MVC中的攔截器案例演示

    Spring?MVC中的攔截器案例演示

    攔截器可以攔截所有的請(qǐng)求,也可以只攔截滿(mǎn)足指定的請(qǐng)求,?Spring?MVC?的攔截器類(lèi)似于過(guò)濾器,用來(lái)執(zhí)行預(yù)處理和后處理操作,本文給大家介紹Spring?MVC中的攔截器案例演示,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • JavaWeb項(xiàng)目中DLL文件動(dòng)態(tài)加載方法

    JavaWeb項(xiàng)目中DLL文件動(dòng)態(tài)加載方法

    在JavaWeb項(xiàng)目中,有時(shí)候我們需要在運(yùn)行時(shí)動(dòng)態(tài)加載DLL文件(在Windows中是DLL,在Linux中是SO文件),這通常用于實(shí)現(xiàn)一些特定的功能,比如調(diào)用本機(jī)代碼或者使用某些特定于操作系統(tǒng)的API,本文將介紹如何在JavaWeb項(xiàng)目中動(dòng)態(tài)加載DLL文件,需要的朋友可以參考下
    2024-12-12
  • Java?NIO?Buffer實(shí)現(xiàn)原理詳解

    Java?NIO?Buffer實(shí)現(xiàn)原理詳解

    本篇文章主要對(duì)NIO核心三件套:緩沖區(qū)(Buffer)、選擇器?(Selector)和通道(Channel),其中之一的緩沖區(qū)Buffer實(shí)現(xiàn)原理的學(xué)習(xí)總結(jié)。感興趣的小伙伴可以了解一下
    2021-11-11
  • java學(xué)習(xí)之路_篇超好的文章

    java學(xué)習(xí)之路_篇超好的文章

    一篇超好的文章!就看你有沒(méi)耐心看!java學(xué)習(xí)之路!
    2008-10-10
  • 解讀什么是構(gòu)造方法?能否被重寫(xiě)或重載?

    解讀什么是構(gòu)造方法?能否被重寫(xiě)或重載?

    這篇文章主要介紹了什么是構(gòu)造方法?能否被重寫(xiě)或重載問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • SpringBoot攔截器不生效的問(wèn)題解決

    SpringBoot攔截器不生效的問(wèn)題解決

    很多開(kāi)發(fā)者會(huì)遇到一個(gè)常見(jiàn)的問(wèn)題,攔截器配置了卻不生效,本文主要介紹了SpringBoot攔截器不生效的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-09-09
  • 從架構(gòu)思維角度分析分布式鎖方案

    從架構(gòu)思維角度分析分布式鎖方案

    這篇文章主要介紹了從架構(gòu)與思維的角度來(lái)分析分布式鎖的方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-01-01

最新評(píng)論

三河市| 五常市| 五家渠市| 千阳县| 孟村| 漳平市| 北安市| 肥东县| 中阳县| 杂多县| 黄梅县| 巩义市| 祁东县| 婺源县| 广东省| 蓬安县| 曲阳县| 遵义县| 长武县| 鲁甸县| 土默特左旗| 鹤庆县| 锡林浩特市| 新昌县| 迁安市| 蚌埠市| 临城县| 汝阳县| 庆安县| 安义县| 浙江省| 阳信县| 祁门县| 淳安县| 台北县| 乡宁县| 景洪市| 西藏| 滁州市| 沛县| 茂名市|