国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java 集合 List

AlphaWatch / 2693人閱讀

摘要:集合代表一個(gè)元素有序可重復(fù)的集合,集合中每個(gè)元素都有其對(duì)應(yīng)的順序索引。集合默認(rèn)按元素的添加順序設(shè)置元素的索引。

List集合代表一個(gè)元素有序、可重復(fù)的集合,集合中每個(gè)元素都有其對(duì)應(yīng)的順序索引。List集合可以通過(guò)索引來(lái)訪問(wèn)指定位置的集合元素。List集合默認(rèn)按元素的添加順序設(shè)置元素的索引。

Java8改進(jìn)的List接口和ListIterator接口 普通方法

List是有序集合,因此List集合里增加了一些根據(jù)索引來(lái)操作集合元素的方法

void add(int index, Object element):將元素element插入到List集合的index處

boolean addAll(int index, Collection c):將集合c所包含的所有元素都插入到List集合的index處

Object get(int index):返回集合index索引處的元素

int indexOf(Object o):返回對(duì)象o在List集合中第一次出現(xiàn)的位置索引

int lastIndexOf(Object o):返回對(duì)象o在List集合中最后一次出現(xiàn)的位置索引

Object remove(int index):刪除并返回index索引處的元素

Object set(int index, Object element):將index索引處的元素替換成element對(duì)象,返回被替換的舊元素

List subList(int fromIndex, int toIndex):返回從索引fromIndex(包含)到索引toIndex(不包含)處所有集合元素組成的子集合

import java.util.*;

public class ListTest3 
{
    public static void main(String[] args) 
    {
        List teams = new ArrayList();
        //向teams集合中添加三個(gè)元素
        teams.add(new String("克利夫蘭騎士"));
        teams.add(new String("金州勇士"));
        teams.add(new String("俄克拉荷馬雷霆"));
        System.out.println(teams);
        //將新字符串對(duì)象插入在第二個(gè)位置
        teams.add(1, new String("費(fèi)城76人"));        
        for (int i = 0 ; i < teams.size() ; i++ )
        {
            System.out.println(teams.get(i));
        }
        //刪除第3個(gè)元素
        teams.remove(2);
        System.out.println(teams);
        //判斷指定元素在List集合中的位置:輸出1,表明位于第二位
        System.out.println(teams.indexOf(new String("費(fèi)城76人")));        ①
        //將第二個(gè)元素替換成新的字符串對(duì)象
        teams.set(1, new String("洛杉磯快船"));
        System.out.println(teams);
        //將teams集合的第二個(gè)元素(包括)
        //到第三個(gè)元素(不包括)截取成子集合
        System.out.println(teams.subList(1, 2));
    }
}

[克利夫蘭騎士, 金州勇士, 俄克拉荷馬雷霆]
克利夫蘭騎士
費(fèi)城76人
金州勇士
俄克拉荷馬雷霆
[克利夫蘭騎士, 費(fèi)城76人, 俄克拉荷馬雷霆]
1
[克利夫蘭騎士, 洛杉磯快船, 俄克拉荷馬雷霆]
[洛杉磯快船]

從代碼①處可知,List判斷兩個(gè)對(duì)象相等的標(biāo)準(zhǔn)只要equals()方法返回true即可

默認(rèn)方法

void replaceAll(UnaryOperator operator):根據(jù)operator指定的計(jì)算規(guī)則重新設(shè)置List集合的所有元素

void sort(Comparator c):根據(jù)Comparator參數(shù)對(duì)List集合的元素排序

import java.util.*;

public class ListTest3
{
    public static void main(String[] args)
    {
        List teams = new ArrayList();
        // 向books集合中添加4個(gè)元素
        teams.add(new String("克利夫蘭騎士"));
        teams.add(new String("金州勇士"));
        teams.add(new String("俄克拉荷馬雷霆"));
        teams.add(new String("費(fèi)城76人"));
        // 使用目標(biāo)類型為Comparator的Lambda表達(dá)式對(duì)List集合排序
        teams.sort((o1, o2)->((String)o1).length() - ((String)o2).length());
        System.out.println(teams);
        // 使用目標(biāo)類型為UnaryOperator的Lambda表達(dá)式來(lái)替換集合中所有元素
        // 該Lambda表達(dá)式控制使用每個(gè)字符串的長(zhǎng)度作為新的集合元素
        teams.replaceAll(ele->((String)ele).length());
        System.out.println(teams); // 輸出[4, 5, 6, 7]
    }
}
ListIterator方法

ListIterator()方法返回一個(gè)ListIterator對(duì)象,ListIterator接口繼承了Iterator接口,提供了專門操作List的方法,ListIterator接口在Iterator接口基礎(chǔ)上增加了如下方法

boolean hasPrevious():返回該迭代器相關(guān)的集合是否還有上一個(gè)元素

Object previous():返回該迭代器的上一個(gè)元素

void add(Object o):在指定位置插入一個(gè)元素

ListIterator與Iterator對(duì)比

ListIterator增加了向前迭代的功能,Iterator只能向后迭代

ListIterator可以通過(guò)add()方法向List集合中添加元素,Iterator只能刪除元素

import java.util.*;
public class ListIteratorTest
{
    public static void main(String[] args)
    {
        String[] teams = {
            "金州勇士", "俄克拉荷馬雷霆",
            "克利夫蘭騎士"
        };
        List teamList = new ArrayList();
        for (int i = 0; i < teams.length ; i++ )
        {
            teamList.add(teams[i]);
        }
        ListIterator lit = teamList.listIterator();
        while (lit.hasNext())
        {
            System.out.println(lit.next());
            lit.add("-------分隔符-------");
        }
        System.out.println("=======下面開(kāi)始反向迭代=======");
        while(lit.hasPrevious())
        {
            System.out.println(lit.previous());
        }
    }
}
金州勇士
俄克拉荷馬雷霆
克利夫蘭騎士
=======下面開(kāi)始反向迭代=======
-------分隔符-------
克利夫蘭騎士
-------分隔符-------
俄克拉荷馬雷霆
-------分隔符-------
金州勇士
ArrayList和Vector實(shí)現(xiàn)類

ArrayList和Vector都是基于數(shù)組實(shí)現(xiàn)的List類,所以ArrayList和Vector類封裝了一個(gè)動(dòng)態(tài)的、允許再分配的Object[]數(shù)組。initialCapacity參數(shù)用來(lái)設(shè)置該數(shù)組的長(zhǎng)度,如果向ArrayList和Vector添加大量元素時(shí),可使用ensureCapacity(int minCapacity)方法一次性增加initialCapacity。減少重分配次數(shù),提供性能

創(chuàng)建空的ArrayList和Vector集合時(shí)不指定initialCapacity參數(shù),則Object[]數(shù)組的長(zhǎng)度默認(rèn)為10

重新分配Object[]數(shù)組的方法

void ensureCapacity(int minCapacity):將ArrayList和Vector集合的長(zhǎng)度增加大于或大于minCapacity值

void trimToSize():調(diào)整ArrayList和Vector集合的Object[]數(shù)組長(zhǎng)度為當(dāng)前元素的個(gè)數(shù)。調(diào)用該方法可減少ArrayList和Vector集合對(duì)象占用的存儲(chǔ)空間

Vector的系列方法名長(zhǎng),具有很多缺點(diǎn),通常盡量少用Vector實(shí)現(xiàn)類

ArrayList和Vector的區(qū)別

ArrayList是線程不安全,當(dāng)多個(gè)線程訪問(wèn)同一個(gè)ArrayList集合時(shí),如果有超過(guò)一個(gè)線程修改了ArrayList集合,則程序必須手動(dòng)保證該集合的同步性

Vector是線程安全,無(wú)須程序保證該集合的特別想,也因?yàn)榫€程安全,Vector的性能比ArrayList的性能低

Collections工具類可以將一個(gè)ArrayList變成線程安全,因此依然不推薦Vector實(shí)現(xiàn)類

固定長(zhǎng)度的List

操作數(shù)組的工具類:Arrays,該工具類提供了asList(Object.. a)方法,可以把一個(gè)數(shù)組或者指定個(gè)數(shù)的對(duì)象轉(zhuǎn)換成一個(gè)List集合,這個(gè)List集合既不是ArrayList實(shí)現(xiàn)類的實(shí)例,也不是Vector實(shí)現(xiàn)類的實(shí)例,而是Arrays的內(nèi)部類ArrayList的實(shí)例

Arrays.ArrayList是一個(gè)固定長(zhǎng)度的List集合,程序只能遍歷訪問(wèn)該集合里的元素,不可增加、刪除該集合里的元素

import java.util.*;

public class FixedSizeList
{
    public static void main(String[] args)
    {
        List fixedList = Arrays.asList("克利夫蘭騎士", "金州勇士");
        // 獲取fixedList的實(shí)現(xiàn)類,將輸出Arrays$ArrayList
        System.out.println(fixedList.getClass());
        // 使用方法引用遍歷集合元素
        fixedList.forEach(System.out::println);
        // 試圖增加、刪除元素都會(huì)引發(fā)UnsupportedOperationException異常
        fixedList.add("俄克拉荷馬雷霆");
        fixedList.remove("金州勇士");
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/66389.html

相關(guān)文章

  • Java集合框架——List接口

    摘要:第三階段常見(jiàn)對(duì)象的學(xué)習(xí)集合框架接口按照集合框架的繼承體系,我們先從中的接口開(kāi)始學(xué)習(xí)一概述及功能演示概述在中充當(dāng)著一個(gè)什么樣的身份呢有序的也稱為序列實(shí)現(xiàn)這個(gè)接口的用戶以對(duì)列表中每個(gè)元素的插入位置進(jìn)行精確地控制。線程不安全,效率高。 第三階段 JAVA常見(jiàn)對(duì)象的學(xué)習(xí) 集合框架——List接口 showImg(https://segmentfault.com/img/remote/14600...

    褰辯話 評(píng)論0 收藏0
  • Java編程基礎(chǔ)16——Colletion集合

    摘要:集合的長(zhǎng)度的是可變的,可以根據(jù)元素的增加而增長(zhǎng)。如果元素個(gè)數(shù)不是固定的推薦用集合。線程安全,效率低。相對(duì)查詢慢線程安全的相對(duì)增刪慢數(shù)組結(jié)構(gòu)底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢,增刪快。線程不安全,效率高。 1_對(duì)象數(shù)組的概述和使用 A:案例演示 需求:我有5個(gè)學(xué)生,請(qǐng)把這個(gè)5個(gè)學(xué)生的信息存儲(chǔ)到數(shù)組中,并遍歷數(shù)組,獲取得到每一個(gè)學(xué)生信息。 import net.allidea.bean.Stu...

    TerryCai 評(píng)論0 收藏0
  • Java編程基礎(chǔ)17——集合(List集合)

    1_(去除ArrayList中重復(fù)字符串元素方式)* A:案例演示 需求:ArrayList去除集合中字符串的重復(fù)值(字符串的內(nèi)容相同) 思路:創(chuàng)建新集合方式 import java.util.ArrayList; import java.util.Iterator; public class ArrayList_1_demo { /* 創(chuàng)建新集合將重復(fù)元素去掉 * 1.明...

    scola666 評(píng)論0 收藏0
  • Java編程基礎(chǔ)18——集合(Set集合

    摘要:并把最終的隨機(jī)數(shù)輸出到控制臺(tái)。方法,在集合中如何存儲(chǔ)元素取決于方法的返回值返回,集合中只有一個(gè)元素。創(chuàng)建集合對(duì)象,傳入比較器。 1_HashSet存儲(chǔ)字符串并遍歷 A:Set集合概述及特點(diǎn) 通過(guò)API查看即可 B:案例演示 HashSet存儲(chǔ)字符串并遍歷 import java.util.HashSet; public class Demo1_HashSet { p...

    SexySix 評(píng)論0 收藏0
  • 集合概要學(xué)習(xí)---粗略

    摘要:集合框架的基本接口類層次結(jié)構(gòu)其中表示接口,表示實(shí)現(xiàn)類和在實(shí)際開(kāi)發(fā)中,需要將使用的對(duì)象存儲(chǔ)于特定數(shù)據(jù)結(jié)構(gòu)的容器中。實(shí)例是迭代器,擁有兩個(gè)方法方法迭代器用于遍歷集合元素。返回值則是轉(zhuǎn)換后的數(shù)組,該數(shù)組會(huì)保存集合中的所有元素。 Java Collections Framework是Java提供的對(duì)集合進(jìn)行定義,操作,和管理的包含一組接口,類的體系結(jié)構(gòu)。 Java集合框架的基本接口/類層次結(jié)構(gòu)...

    DesGemini 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<