日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java中為何要使用ArrayList

瀏覽:93日期:2022-08-25 13:42:05

前言

當我們用于獲取一組數據的時候,我們總是通過下面的格式定義變量。

private List<Tag> tags = new ArrayList<>();

我們熟悉的數組去哪了?

回顧數組

我們學習c語言,c++,會學到數組是存儲同類型的一組數據。后來學習指針,知道了兩種結構,鏈式結構與順序結構。再后來學習數據結構。知道了兩種結構的優缺點。

鏈式結構方便刪除,添加。順序結構方便查找。

但是我們在實際使用中逐漸感受到數組在使用上的缺點。不僅僅是在定義時就要規定數組大小。

我們通過一個實例來說明

Enemy[] enemys = new Enemy[3];enemys[0].name = name1;enemys[1].name = name2;enemys[2].name = name3;// 通過名字擊殺對方public void kill(string name) { for (Enemy enemy : this.enemys) { if (enemy.name === name) { enemy.death(); System.out.println('擊殺成功'); break; } }}

比如我們玩游戲,現在面前有三個敵人。我們可以通過名字擊殺對方(通過什么方法擊殺對方并不是我們的重點)。但是代碼有一些問題。如果我們總是傳入一個名字,比如name1,此時代碼總是會顯示擊殺成功,一個敵人只有一條命。現在顯然與實際不符。如何解決呢。這時我們想到了一個傳統的解決辦法。在enemy類里增加增加一個Boolean類型屬性alive,默認值為true。此時改寫kill方法代碼。

public void kill(string name) { for (Enemy enemy : this.enemys) { if (enemy.name === name && enemy.alive === true) { enemy.death(); enemy.alive = false; System.out.println('擊殺成功'); break; } }}

就很好的解決了一個敵人可以被擊殺多次的bug。但是,問題解決了,還有一些不足。

我們雖然不會顯示一個敵人多次擊殺成功。但是還是要搜尋一遍。有沒有更好的辦法呢。

ArrayList

如果我們能在成功擊殺的時候。能夠將這個敵人移除數組,并將數組長度減一。將會變得完美。但是,通過數組是實現不了的。

這時ArrayList很好的解決了這個問題。

ArrayList并不是一個數組。而是Java函數庫的一個類。我們通過ArrayList來改寫一下我們的代碼。

ArrayList<Enemy> enemys = new ArrayList<Enemy>();Enemy enemy1 = new Enemy();enemy1.name = name1;enemys.add(enemy1);Enemy enemy2 = new Enemy();enemy2.name = name2;enemys.add(enemy2);Enemy enemy3 = new Enemy();enemy3.name = name3;enemys.add(enemy3);// 通過名字擊殺對方public void kill(string name) { for (Enemy enemy : this.enemys) { if (enemy.name === name) { enemy.death(); this.enemys.remove(enemy); System.out.println('擊殺成功'); break; } }}

這時,當我們成功擊殺敵人時,將敵人移除。就會使得下次遍歷時次數變少,并且也避免了重復殺死一個敵人的bug。

List與ArrayList

上邊的代碼中,我們在定義時是聲明的ArayList變量類型為ArrayList類型

ArrayList<Enemy> enemys = new ArrayList<Enemy>();

但是回到我們的實際項目中為什么是List類型呢

我們剛才說到ArrayList是一個類。我們看一下ArrayList類的繼承關系

Java中為何要使用ArrayList

而List是一個接口

public interface List<E> extends Collection<E> {}

所以說ArrayList是List的一個實現類。而我們在實際項目中寫

List<Subject> usedSubjects = new ArrayList<>();

也就實現了以下格式代碼

接口 變量名 = new 接口實現類();

能夠實現此寫法的一個原因就是面向對象的三大特點之一——多態。什么是多態?舉個例子,對于以下Dog類

class Animal {}class Gog extends Animal {}

我們在定義對象時總是通過這樣來定義

Dog dog = new Dog();

而多態允許我們可以使用這種方式定義

Animal dog = new Dog ();

多態不僅支持子類與父類之間,也支持接口與他的實現類之間。

那么這么寫有什么好處呢?

List接口有多個實現類,現在你用的是ArrayList,也許哪一天你需要換成其它的實現類,如 LinkedList或者Vector等等,這時你只要改變這一行就行了: List list = new LinkedList(); 其它使用了list地方的代碼根本不需要改動。

假設你開始用ArrayList alist = new ArrayList(), 這下你有的改了,特別是如果你使用了ArrayList實現類特有的方法和屬性。

以上就是Java中為何要使用ArrayList的詳細內容,更多關于Java ArrayList的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩伦理在线一区| 日韩二区在线观看| 国产情侣久久| 91精品视频一区二区| 亚洲精品系列| 亚洲精品欧洲| 香蕉久久久久久| 亚洲欧洲美洲国产香蕉| 欧美亚洲国产精品久久| 欧洲亚洲一区二区三区| 国产一区清纯| 亚洲激情中文在线| 香蕉精品999视频一区二区| 鲁大师成人一区二区三区 | 欧美日韩日本国产亚洲在线| 亚洲天堂成人| 国产精品97| 久久国产精品久久久久久电车| 一区二区日韩免费看| 日韩欧美中文字幕一区二区三区 | 亚洲专区欧美专区| 中文在线日韩| 久久国产精品99国产| 视频一区二区中文字幕| 中文字幕av一区二区三区四区| 色狠狠一区二区三区| 国产欧美另类| 日本综合视频| 国产精品伦一区二区| 高清日韩欧美| 欧美女激情福利| 91成人在线| 麻豆91精品视频| 97se亚洲| 国产精选在线| 午夜宅男久久久| 欧美国产亚洲精品| 欧美99久久| 777久久精品| 91精品xxx在线观看| 免费在线看一区| 蜜桃久久久久| 黄色不卡一区| 日本不卡一区二区| 91一区二区三区四区| 欧美日韩国产一区精品一区| 日本少妇精品亚洲第一区| 欧美黄页在线免费观看| 黄色不卡一区| 国产精品一国产精品| 99精品在线| 91嫩草精品| 国产一区日韩欧美| 国产精品亚洲四区在线观看| 99久久久久国产精品| 日韩激情网站| 亚洲一本视频| 国产精品伦一区二区| 欧美丝袜一区| 麻豆精品av| 在线精品亚洲| 日韩成人综合| 亚洲毛片视频| 日韩欧美在线中字| 69精品国产久热在线观看| 久久香蕉国产| 国产精品国码视频| 日韩视频一区| 日韩av免费大片| 天堂va欧美ⅴa亚洲va一国产| 日本午夜大片a在线观看| 无码日韩精品一区二区免费| 日韩精品影视| 久久精品国产99| 日韩一区二区三区精品| 香蕉人人精品| 精品中文字幕一区二区三区四区| 日韩一区二区免费看| 成人在线丰满少妇av| 国产欧美一区二区精品久久久| 国产精品婷婷| 久久中文字幕二区| 国产欧美久久一区二区三区| 日韩中文字幕不卡| 99久久亚洲精品蜜臀| 欧美国产日韩电影| 亚洲人成精品久久久| 午夜欧美精品| 日韩欧美一区二区三区在线观看 | 一区久久精品| 色婷婷色综合| 国产欧美一级| 亚洲三级视频| 久久国产成人| 99亚洲视频| 99久久精品国产亚洲精品| 国产精品久久久久久久久妇女| 国产日韩一区二区三免费高清 | а√在线中文在线新版| 国产日韩欧美一区| 日韩在线卡一卡二| 日韩av一区二区在线影视| 日韩制服丝袜av| 国产精品日韩久久久| 影音先锋久久| 免费视频亚洲| 高清av一区| 日韩欧美中文字幕一区二区三区| 性一交一乱一区二区洋洋av| 久久免费高清| 日韩和的一区二在线| 国产精品九九| 国产精品亚洲四区在线观看 | 在线一区av| 黄色网一区二区| 美女性感视频久久| 国产激情一区| 欧美aⅴ一区二区三区视频| 国产亚洲人成a在线v网站| 日韩精品成人在线观看| 亚洲精品日韩久久| 亚洲精品大全| 日韩精品一区二区三区免费视频| 综合一区在线| 欧美亚洲专区| 日本va欧美va欧美va精品| 欧美一区精品| 久久不见久久见免费视频7| 美日韩一区二区三区| 国产va免费精品观看精品视频| 国产成人精品福利| 日韩欧美中文| 欧美日韩国产高清电影| 99在线精品视频在线观看 | 亚洲午夜精品久久久久久app| 极品日韩av| 午夜在线一区| 日韩1区2区3区| 国产精品亚洲一区二区在线观看| 日韩欧美激情| 麻豆久久久久久| www.com.cn成人| 国内精品福利| 亚洲有吗中文字幕| 欧美久久久网站| 久久一区精品| 欧美片第1页| 在线亚洲一区| 日本aⅴ精品一区二区三区| 国产精品久久| 欧产日产国产精品视频| 激情婷婷综合| 日本一区二区三区中文字幕| 国产精品白丝久久av网站| 久久精品国产在热久久| 天堂中文在线播放| 先锋影音国产一区| 国产精品日本一区二区不卡视频| 国产69精品久久| 九九久久电影| 日韩精品欧美成人高清一区二区| 久久男人av| 亚洲女同一区| 久久精品99国产精品日本| 91日韩在线| 在线免费观看亚洲| 国产一区二区三区探花| 激情欧美亚洲| 欧美日韩中出| 国产精品久久久久久久久妇女| 91久久久久| 国产精品一区二区三区四区在线观看 | 亚洲狼人精品一区二区三区| 国产另类在线| 日韩福利一区| 日本亚洲三级在线| 国产一区二区三区视频在线| 国模 一区 二区 三区| 亚洲精品在线二区| 日韩美女一区二区三区在线观看| 久久一区二区三区电影| 日韩福利视频网| 黑森林国产精品av| 亚洲精品大全| 色婷婷久久久| 国产伦乱精品| 欧美日韩国产在线观看网站| 99国产精品| 国产成人久久精品一区二区三区| 亚洲欧美高清| 国产91在线精品| 日韩中文一区二区| 欧美中文一区二区| 国产精品美女午夜爽爽| 国产一区二区高清| 精品一区二区三区亚洲| 免费人成黄页网站在线一区二区| 国产精品网在线观看| 婷婷亚洲五月| 精品视频免费|