来源:自学PHP网 时间:2020-09-27 14:40 作者:小飞侠 阅读:次
[导读] Java中为何要使用ArrayList...
今天带来Java中为何要使用ArrayList教程详解
前言 当我们用于获取一组数据的时候,我们总是通过下面的格式定义变量。 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; } } } 比如我们玩游戏,现在面前有三个敌人。我们可以通过名字击杀对方(通过什么方法击杀对方并不是我们的重点)。 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类型
但是回到我们的实际项目中为什么是List类型呢 我们刚才说到ArrayList是一个类。我们看一下ArrayList类的继承关系
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com