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

java -- 簡單的數(shù)據(jù)結(jié)構(gòu)、List接口和Collections類

這篇具有很好參考價值的文章主要介紹了java -- 簡單的數(shù)據(jù)結(jié)構(gòu)、List接口和Collections類。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu) : 數(shù)據(jù)用什么樣的方式組合在一起。
數(shù)據(jù)存儲的常用結(jié)構(gòu)有:棧、隊(duì)列、數(shù)組、鏈表

棧:stack,又稱堆棧,它是運(yùn)算受限的線性表,其限制是僅允許在標(biāo)的一端進(jìn)行插入和刪除操作,不允許在其他任何位置進(jìn)行添加、查找、刪除等操作。

采用該結(jié)構(gòu)的集合,對元素的存取有如下的特點(diǎn)

  • 先進(jìn)后出(FILO)。例如,子彈壓進(jìn)彈夾,先壓進(jìn)去的子彈在下面,后壓進(jìn)去的子彈在上面,當(dāng)開槍時,先彈出上面的子彈,然后才能彈出下面的子彈。

  • 棧的入口、出口的都是棧的頂端位置。

這里兩個名詞需要注意:

  • 壓棧:就是存元素。即,把元素存儲到棧的頂端位置,棧中已有元素依次向棧底方向移動一個位置。
  • 彈棧:就是取元素。即,把棧的頂端位置元素取出,棧中已有元素依次向棧頂方向移動一個位置。

隊(duì)列

queue,簡稱隊(duì),它同堆棧一樣,也是一種運(yùn)算受限的線性表,其限制是僅允許在表的一端進(jìn)行插入,而在表的另一端進(jìn)行刪除。
采用該結(jié)構(gòu)的集合,對元素的存取有如下的特點(diǎn):

  • 先進(jìn)先出(FIFO)。例如,小火車過山洞,車頭先進(jìn)去,車尾后進(jìn)去;車頭先出來,車尾后出來。
  • 隊(duì)列的入口、出口各占一側(cè)。

數(shù)組

Array,是有序的元素序列,數(shù)組是在內(nèi)存中開辟一段連續(xù)的空間,并在此空間存放元素。
采用該結(jié)構(gòu)的集合,對元素的存取有如下的特點(diǎn):

  • 查找元素快:通過索引,可以快速訪問指定位置的元素

  • 增刪元素慢

    • 指定索引位置增加元素:需要創(chuàng)建一個新數(shù)組,將指定新元素存儲在指定索引位置,再把原數(shù)組元素根據(jù)索引,復(fù)制到新數(shù)組對應(yīng)索引的位置。
    • 指定索引位置刪除元素:需要創(chuàng)建一個新數(shù)組,把原數(shù)組元素根據(jù)索引,復(fù)制到新數(shù)組對應(yīng)索引的位置,原數(shù)組中指定索引位置元素不復(fù)制到新數(shù)組中。

鏈表

linked list,由一系列結(jié)點(diǎn)node(鏈表中每一個元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時i動態(tài)生成。
每個結(jié)點(diǎn)包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點(diǎn)地址的指針域。
我們常說的鏈表結(jié)構(gòu)有單向鏈表與雙向鏈表,這里說是單向鏈表。
采用該結(jié)構(gòu)的集合,對元素的存取有如下的特點(diǎn):

  • 多個結(jié)點(diǎn)之間,通過地址進(jìn)行連接。例如,多個人手拉手,每個人使用自己的右手拉住下個人的左手,依次類推,這樣多個人就連在一起了。

  • 查找元素慢:想查找某個元素,需要通過連接的節(jié)點(diǎn),依次向后查找指定元素

  • 增刪元素快

List 接口

java.util.List接口繼承自Collection接口,是單列集合的一個重要分支,習(xí)慣性地會將實(shí)現(xiàn)了List接口的對象稱為List集合。
在List集合中允許出現(xiàn)重復(fù)的元素,所有的元素是以一種線性方式進(jìn)行存儲的,在程序中可以通過索引來訪問集合中的指定元素。另外,List集合還有一個特點(diǎn)就是元素有序,即元素的存入順序和取出順序一致。

List接口特點(diǎn):

  1. 它是一個元素存取有序的集合。例如,存元素的順序是11、22、33。那么集合中,元素的存儲就是按照11、22、33的順序完成的)。
  2. 它是一個帶有索引的集合,通過索引就可以精確的操作集合中的元素(與數(shù)組的索引是一個道理)。
  3. 集合中可以有重復(fù)的元素,通過元素的equals方法,來比較是否為重復(fù)的元素。

常用方法

List作為Collection集合的子接口,不但繼承了Collection接口中的全部方法,而且還增加了一些根據(jù)元素索引來操作集合的特有方法

  • public void add(int index, E element): 將指定的元素,添加到該集合中的指定位置上。
  • public E get(int index):返回集合中指定位置的元素。
  • public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
  • public E set(int index, E element):用指定元素替換集合中指定位置的元素,返回值的更新前的元素。

List的子類

ArrayList集合

java.util.ArrayList集合數(shù)據(jù)存儲的結(jié)構(gòu)是數(shù)組結(jié)構(gòu)。元素增刪慢,查找快,由于日常開發(fā)中使用最多的功能為查詢數(shù)據(jù)、遍歷數(shù)據(jù),所以ArrayList是最常用的集合。

隨意的使用ArrayList完成任何需求是不提倡的。

LinkedList集合

java.util.LinkedList集合數(shù)據(jù)存儲的結(jié)構(gòu)是鏈表結(jié)構(gòu)。方便元素添加、刪除的集合。是一個雙向鏈表結(jié)構(gòu)

import java.util.LinkedList;

/*
    java.util.LinkedList
        有序有索引 元素可重復(fù)
        底層數(shù)據(jù)結(jié)構(gòu)是雙向鏈表
        查詢慢 增刪快
        方法:
            public void add(E e) :將指定元素添加到列表的結(jié)尾
            public void addFirst(E e) :將指定元素插入此列表的開頭。
            public void addLast(E e) :將指定元素添加到此列表的結(jié)尾, 其實(shí)相當(dāng)于add方法
            public E get(int index) :返回列表的指定元素。
            public E getFirst() :返回此列表的第一個元素。
            public E getLast() :返回此列表的最后一個元素。
            public E remove() :調(diào)用removeFirst方法, 移除并返回此列表的第一個元素。
            public E removeFirst() :移除并返回此列表的第一個元素。
            public E removeLast() :移除并返回此列表的最后一個元素。
            public E pop() :從此列表所表示的堆棧處彈出一個元素。
            public void push(E e) :將元素推入此列表所表示的堆棧。
            public boolean isEmpty() :如果列表不包含元素,則返回true。
            public void clear() :刪除列表中所有元素
 */
public class Demo {
    public static void main(String[] args) {
        LinkedList<Integer> list = new LinkedList<Integer>();
        list.addLast(200);
        list.add(1);
        list.add(2);
        list.addFirst(100);
        System.out.println(list);

        System.out.println(list.get(2));
        System.out.println(list.getFirst());
        System.out.println(list.getLast());

        list.removeFirst();
        list.removeLast();
        System.out.println(list);

        list.clear();
        System.out.println(list);

        // pop和push是棧結(jié)構(gòu)
        LinkedList<Integer> stack = new LinkedList<Integer>();
        // 壓棧
        stack.push(1);
        stack.push(2);
        stack.push(3);
        System.out.println(stack);

        // 彈棧, 并返回彈出的內(nèi)容
        System.out.println(stack.pop());
        System.out.println(stack);
    }
}

Collections類

java.utils.Collections是集合工具類,用來對集合進(jìn)行操作

shuffle方法

public static void shuffle(List list)
//打亂(List)集合中元素

昨天的練習(xí)題中的洗牌需求可以使用該方法進(jìn)行實(shí)現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-409929.html

Collections.shuffle(pokerArrayList);

sort方法

public static <T extends Comparable<? super T>> void sort(List<T> list)
// 對集合中元素進(jìn)行排序 集合中的元素必須實(shí)現(xiàn)自然排序接口 Comparable 并重寫compareTo方法
public static <T> void sort(List<T> list, Comparator<? super T> c)
// 通過傳入的比較器指定的規(guī)則進(jìn)行排序
public class Demo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("anc");
        list.add("abc");
        list.add("Abc");
        list.add("ABc");
        Collections.sort(list);
        System.out.println(list);

        List<Person> persons = new ArrayList<>();
        persons.add(new Person(23));
        persons.add(new Person(17));
        persons.add(new Person(26));
        Collections.sort(persons);
        System.out.println(persons);
        // 傳入Comparator比較器指定規(guī)則 完成降序 
        Collections.sort(list, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                // o1-o2升序 o2-o1降序
                return o2.compareTo(o1);
            }
        });
        System.out.println(list);

   }
}
class Person implements Comparable<Person> {
    private int age;

    public Person(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public int compareTo(Person other) {
        return this.age - other.age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                '}';
    }
}

到了這里,關(guān)于java -- 簡單的數(shù)據(jù)結(jié)構(gòu)、List接口和Collections類的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • [JAVA數(shù)據(jù)結(jié)構(gòu)] 認(rèn)識 Iterable、Collection、List 的常見方法簽名以及含義

    [JAVA數(shù)據(jù)結(jié)構(gòu)] 認(rèn)識 Iterable、Collection、List 的常見方法簽名以及含義

    ????????(一)Iterable ????????????????1. 介紹 ????????????????2. 常見方法 ????????(二)Collection ????????????????1. 介紹 ?????????????????2. 常見方法 ????????(三) List? ????????????????1. 介紹 ????????????????2. 常見方法

    2024年02月02日
    瀏覽(24)
  • Java學(xué)數(shù)據(jù)結(jié)構(gòu)(1)——抽象數(shù)據(jù)類型ADT & 表List、棧Stack和隊(duì)列Qeue

    Java學(xué)數(shù)據(jù)結(jié)構(gòu)(1)——抽象數(shù)據(jù)類型ADT & 表List、棧Stack和隊(duì)列Qeue

    1.抽象數(shù)據(jù)類型Abstract data type的概念; 2.表list,java中的ArrayList和linkedlist以及vector的分析; 3.棧stack的分析以及應(yīng)用; 4.隊(duì)列queue的理解,以及rabbitmq的應(yīng)用; 抽象數(shù)據(jù)類型(abstract data type,ADT)是帶有一組操作的一些對象的集合。抽象數(shù)據(jù)類型是數(shù)學(xué)的抽象;在ADT的定義中沒有地

    2024年02月11日
    瀏覽(61)
  • 【Java數(shù)據(jù)結(jié)構(gòu) -- 實(shí)現(xiàn)雙鏈表的接口方法】

    【Java數(shù)據(jù)結(jié)構(gòu) -- 實(shí)現(xiàn)雙鏈表的接口方法】

    雙鏈表是一種數(shù)據(jù)結(jié)構(gòu),其中每個節(jié)點(diǎn)包含 一個指向前一個節(jié)點(diǎn)的指針和一個指向后一個節(jié)點(diǎn)的指針 。由于鏈表沒有將元素存儲在連續(xù)的空間中,元素存儲在單獨(dú)的節(jié)點(diǎn)中,然后通過引用將節(jié)點(diǎn)連接起來,因此雙鏈表可以任意且快速的插入和刪除元素。 引用接口IList,在把

    2024年01月16日
    瀏覽(98)
  • Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列(簡單講解)

    Java------數(shù)據(jù)結(jié)構(gòu)之棧與隊(duì)列(簡單講解)

    本篇碎碎念 :時隔n個月,繼續(xù)寫博客,假期落下的進(jìn)度,在開學(xué)后努力追趕, 假期不努力,開學(xué)徒傷悲啊,此時此刻真想對自己說一句,活該啊~~~~ 欠下的鏈表練習(xí)題講解會在下次更新~~~~ 今日份勵志文案: ?萬物皆有裂痕,那是光照進(jìn)來的地方 棧:一種特殊的線性表,其只允

    2024年04月14日
    瀏覽(22)
  • 第12章_集合框架(Collection接口,Iterator接口,List,Set,Map,Collections工具類)

    第12章_集合框架(Collection接口,Iterator接口,List,Set,Map,Collections工具類)

    1.1 生活中的容器 1.2 數(shù)組的特點(diǎn)與弊端 一方面,面向?qū)ο笳Z言對事物的體現(xiàn)都是以對象的形式,為了方便對多個對象的操作,就要對對象進(jìn)行存儲。 另一方面,使用數(shù)組存儲對象方面具有 一些弊端 ,而Java 集合就像一種容器,可以 動態(tài)地 把多個對象的引用放入容器中。 數(shù)

    2024年01月25日
    瀏覽(38)
  • 數(shù)據(jù)結(jié)構(gòu)之list類

    數(shù)據(jù)結(jié)構(gòu)之list類

    list是列表類。從list 類開始,我們就要接觸獨(dú)屬于 Python 的數(shù)據(jù)類型了。Python 簡單、易用,很大一部分原因就是它對基礎(chǔ)數(shù)據(jù)類型的設(shè)計(jì)各具特色又相輔相成。 話不多說,讓我們開始學(xué)習(xí)第一個 Python 數(shù)據(jù)類型一list。 1. list的賦值 輸出結(jié)果 2. Python中l(wèi)ist的知識點(diǎn) list 類與str類

    2024年01月19日
    瀏覽(31)
  • 【Redis】數(shù)據(jù)結(jié)構(gòu) - List

    使用場景 Redis數(shù)據(jù)結(jié)構(gòu)list適用于需要保留多個有序元素的場景,如消息隊(duì)列、任務(wù)隊(duì)列、最近聯(lián)系人列表等。具體應(yīng)用包括: 消息隊(duì)列:將需要處理的消息按照先后順序放入list中,再使用消費(fèi)者程序逐一取出進(jìn)行處理。 任務(wù)隊(duì)列:將需要執(zhí)行的任務(wù)按照優(yōu)先級或時間順序放

    2023年04月08日
    瀏覽(17)
  • Redis數(shù)據(jù)結(jié)構(gòu) — List

    Redis數(shù)據(jù)結(jié)構(gòu) — List

    目錄 鏈表結(jié)構(gòu)設(shè)計(jì) ?編輯鏈表節(jié)點(diǎn)結(jié)構(gòu)設(shè)計(jì) 鏈表的優(yōu)勢與缺陷 Redis 的 List 對象的底層實(shí)現(xiàn)之一就是鏈表。C 語言本身沒有鏈表這個數(shù)據(jù)結(jié)構(gòu)的,所以 Redis 自己設(shè)計(jì)了一個鏈表數(shù)據(jù)結(jié)構(gòu)。 有前置節(jié)點(diǎn)和后置節(jié)點(diǎn),本質(zhì)為 雙向鏈表 Redis 的鏈表實(shí)現(xiàn)優(yōu)點(diǎn)如下: listNode 鏈表節(jié)點(diǎn)

    2024年02月16日
    瀏覽(30)
  • Redis數(shù)據(jù)結(jié)構(gòu)——鏈表list

    Redis數(shù)據(jù)結(jié)構(gòu)——鏈表list

    鏈表是一種常用的數(shù)據(jù)結(jié)構(gòu),提供了順序訪問的方式,而且高效地增刪操作。 Redis中廣泛使用了鏈表,例如:列表的底層實(shí)現(xiàn)之一就是鏈表。 在Redis中,鏈表分為兩部分:鏈表信息 + 鏈表節(jié)點(diǎn)。 鏈表節(jié)點(diǎn)用來表示鏈表中的一個節(jié)點(diǎn),基礎(chǔ)的值和指向前和后的指針 鏈表信息,

    2024年02月13日
    瀏覽(28)
  • day32 泛型 數(shù)據(jù)結(jié)構(gòu) List

    ?概述 ? ? ? ? JDK1.5同時推出了兩個和集合相關(guān)的特性:增強(qiáng)for循環(huán),泛型 ????????泛型可以修飾泛型類中的屬性,方法返回值,方法參數(shù), 構(gòu)造函數(shù)的參數(shù) Java提供的泛型類/接口 Collection, List, Set,Iterator 等 自定義的泛型 public class Student H,W {} 自定義的泛型方法 public

    2024年02月09日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包