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

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

Java中為何要使用ArrayList

瀏覽:95日期: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精品精品| 老色鬼久久亚洲一区二区| 亚洲日本在线观看视频| 性一交一乱一区二区洋洋av| 久久香蕉精品| 97久久超碰| 另类欧美日韩国产在线| 黑森林国产精品av| 国产一区二区三区四区五区| 日韩国产一区| 99在线精品视频在线观看| 一区二区日韩免费看| 欧美精品中文| 国产传媒av在线| 99国产精品视频免费观看一公开 | 911精品国产| 国产精品1luya在线播放| 国产精品伦理久久久久久| 韩国久久久久久| 在线看片不卡| 欧美日韩午夜| 91精品国产自产在线观看永久∴| 蜜桃av一区二区| 丁香婷婷久久| 蜜臀av国产精品久久久久 | 日韩精品国产精品| 成人台湾亚洲精品一区二区| 91精品亚洲| 久久精品99国产精品| zzzwww在线看片免费| 亚洲在线成人| 国产精品v一区二区三区| 91精品国产91久久久久久黑人| 亚洲免费毛片| 不卡一二三区| 婷婷亚洲成人| 久久国产亚洲| 国产亚洲高清在线观看| 欧美精品高清| 欧美日韩亚洲一区二区三区在线| 日韩精品一区二区三区免费观看| 日韩成人精品一区二区三区| 欧美日韩精品免费观看视欧美高清免费大片| 久久国产88| 日本午夜大片a在线观看| 日本成人精品| 久久久久免费av| 国产精品v日韩精品v欧美精品网站 | 午夜欧美巨大性欧美巨大| 亚洲ww精品| 亚洲天堂成人| 国产精品毛片久久久| 午夜影院欧美| 麻豆精品视频在线观看免费| 日av在线不卡| 久久激情中文| 精品少妇av| 日本天堂一区| 爽爽淫人综合网网站| 日本不良网站在线观看| 国产精品99久久久久久董美香| 亚洲激情另类| 欧美sm一区| 精品99在线| 国产精品xvideos88| 日韩三区四区| 久久亚洲欧洲| 日韩午夜高潮| 亚洲性色视频| 久久精品一区二区不卡| 精品国产精品久久一区免费式| 一二三区精品| 国产婷婷精品| 欧美日韩国产欧| 四虎影视精品| 在线中文字幕播放| 国产精品成人a在线观看| 国产精品igao视频网网址不卡日韩 | 色8久久久久| 蜜臀a∨国产成人精品| 在线日韩视频| 日韩欧美一区二区三区免费观看| 久久尤物视频| 欧美国产极品| 国产精品极品| 国产精品蜜月aⅴ在线| 日韩综合一区二区三区| 国产麻豆综合| 日韩一级不卡| 丝袜亚洲另类欧美| 在线精品一区| 日韩精品成人| 国产精品xvideos88| 国产精品www994| 精品国产91| 婷婷综合六月| 欧美日韩国产免费观看| 日韩中文字幕亚洲一区二区va在线| 午夜在线一区| 一区二区国产在线观看| 日韩视频一二区| 日本麻豆一区二区三区视频| 热久久国产精品| 亚洲精品一级| 国产精品免费不| 精品美女在线视频| а√天堂8资源在线| 亚洲福利一区| 日韩精品一二区| 国产伦精品一区二区三区千人斩| 国产黄色一区| 国产不卡精品在线| 999久久久国产精品| 不卡中文字幕| 综合激情在线| 国产精品成人一区二区网站软件| 国产一区二区三区黄网站| 久久久水蜜桃av免费网站| 99精品综合| 蜜臀av国产精品久久久久| 久久狠狠久久| 久久久男人天堂| 中文日韩在线| 久久国产生活片100| 国产在线观看www| 亚洲精品国产偷自在线观看| 亚洲视频国产精品| 乱一区二区av| 婷婷亚洲五月| 91成人在线网站| 成人一二三区| 亚洲一级影院| 欧美午夜三级| 福利在线免费视频| 伊人久久亚洲热| 91九色综合| 日韩国产在线| 日韩一区精品字幕| 久久亚洲资源中文字| 国产va免费精品观看精品视频| 亚洲91久久| 日本国产亚洲| 国产日韩欧美一区二区三区在线观看| 国产91欧美| 麻豆91小视频| 2023国产精品久久久精品双 | 嫩草伊人久久精品少妇av杨幂| 久久狠狠婷婷| 欧美色综合网| 午夜欧美视频| 久久99精品久久久久久园产越南 | 亚洲久草在线| 欧洲av不卡| 日本aⅴ免费视频一区二区三区| 日韩中文在线电影| 97成人在线| 婷婷亚洲五月| 精品视频国产| 午夜久久av| 麻豆精品蜜桃| 麻豆精品久久久| 婷婷亚洲成人| 伊人精品在线| 日韩黄色大片网站| 国产乱论精品| 麻豆9191精品国产| 岛国av在线网站| 国产美女亚洲精品7777| 亚洲一区亚洲| 偷拍精品精品一区二区三区| 国产精品久久久网站| 亚洲一区二区三区高清| 中文字幕在线看片| 久久国产精品色av免费看| aⅴ色国产欧美| 麻豆网站免费在线观看| 国产免费av国片精品草莓男男 | 亚洲精品1区2区| 亚洲最新无码中文字幕久久 | 狠狠久久伊人中文字幕| 亚洲欧洲av| 国产亚洲高清视频| 日本精品影院| 国产精品一区二区三区www | 亚洲欧洲日韩| 亚洲激情社区| 欧美日韩高清| 日韩三区免费| 麻豆网站免费在线观看| 捆绑调教美女网站视频一区| 亚洲精品观看| 中文字幕一区二区三区四区久久 | 青青久久av| 国产综合色区在线观看| 精品视频一区二区三区在线观看 | 丁香婷婷久久| 麻豆久久一区| 欧美成人aaa| 麻豆国产精品| 精品91福利视频|