首页 / JAVA / Java自学-集合框架 遍历
Java自学-集合框架 遍历
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java自学-集合框架 遍历,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3169字,纯文字阅读大概需要5分钟。
内容图文
![Java自学-集合框架 遍历](/upload/InfoBanner/zyjiaocheng/657/186447593d1f467397eb20efa083c9e1.jpg)
遍历ArrayList的三种方法
步骤 1 : 用for循环遍历
通过前面的学习,知道了可以用size()和get()分别得到大小,和获取指定位置的元素,结合for循环就可以遍历出ArrayList的内容
package collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import charactor.Hero;
public class TestCollection {
public static void main(String[] args) {
List<Hero> heros = new ArrayList<Hero>();
// 放5个Hero进入容器
for (int i = 0; i < 5; i++) {
heros.add(new Hero("hero name " + i));
}
// 第一种遍历 for循环
System.out.println("--------for 循环-------");
for (int i = 0; i < heros.size(); i++) {
Hero h = heros.get(i);
System.out.println(h);
}
}
}
步骤 2 : 迭代器遍历
使用迭代器Iterator遍历集合中的元素
package collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import charactor.Hero;
public class TestCollection {
public static void main(String[] args) {
List<Hero> heros = new ArrayList<Hero>();
//放5个Hero进入容器
for (int i = 0; i < 5; i++) {
heros.add(new Hero("hero name " +i));
}
//第二种遍历,使用迭代器
System.out.println("--------使用while的iterator-------");
Iterator<Hero> it= heros.iterator();
//从最开始的位置判断"下一个"位置是否有数据
//如果有就通过next取出来,并且把指针向下移动
//直到"下一个"位置没有数据
while(it.hasNext()){
Hero h = it.next();
System.out.println(h);
}
//迭代器的for写法
System.out.println("--------使用for的iterator-------");
for (Iterator<Hero> iterator = heros.iterator(); iterator.hasNext();) {
Hero hero = (Hero) iterator.next();
System.out.println(hero);
}
}
}
步骤 3 : 用增强型for循环
使用增强型for循环可以非常方便的遍历ArrayList中的元素,这是很多开发人员的首选。
不过增强型for循环也有不足:
无法用来进行ArrayList的初始化
无法得知当前是第几个元素了,当需要只打印单数元素的时候,就做不到了。 必须再自定下标变量。
package collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import charactor.Hero;
public class TestCollection {
public static void main(String[] args) {
List<Hero> heros = new ArrayList<Hero>();
// 放5个Hero进入容器
for (int i = 0; i < 5; i++) {
heros.add(new Hero("hero name " + i));
}
// 第三种,增强型for循环
System.out.println("--------增强型for循环-------");
for (Hero h : heros) {
System.out.println(h);
}
}
}
练习: 删除ArrayList中的数据
首先初始化一个Hero集合,里面放100个Hero对象,名称分别是从
hero 0
hero 1
hero 2
...
hero 99.
通过遍历的手段,删除掉名字编号是8的倍数的对象
答案:
package collection;
import java.util.ArrayList;
import java.util.List;
import charactor.Hero;
public class TestCollection {
public static void main(String[] args) {
List<Hero> heros = new ArrayList<Hero>();
// 放100个Hero进入容器
for (int i = 0; i < 100; i++) {
heros.add(new Hero("hero name " + i));
}
//准备一个容器,专门用来装要删除的对象
List<Hero> deletingHeros = new ArrayList<>();
for (Hero h : heros) {
int id = Integer.parseInt(h.name.substring(10));
if (0 == id % 8)
deletingHeros.add(h);
}
for (Hero h : deletingHeros) {
heros.remove(h);
}
// heros.removeAll(deletingHeros); //直接通过removeAll删除多个Hero对象
System.out.println(heros);
}
}
不能够在使用Iterator和增强for循环遍历数据的同时,删除数据,否则会抛出ConcurrentModificationException
解决办法,是准备一个临时容器,专门用来保存需要删除的对象。 然后再删掉
内容总结
以上是互联网集市为您收集整理的Java自学-集合框架 遍历全部内容,希望文章能够帮你解决Java自学-集合框架 遍历所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。