package cn.how2j.col;
public class Hero {
public String name;
public float hp;
public int damage;
// 构造方法
public Hero() {
}
public Hero(String name) {
this.name = name;
}
// 重写构造方法
public String toString() {
return name;
}
// 重写 equals 方法
@Override
public boolean equals(Object hero) {
if (this == hero) {
return true;
}
if (hero instanceof Hero) {
Hero anotherHero = (Hero)hero;
if (this.name.equals(anotherHero.name)) {
return true;
}
}
return false;
}
}
使用方法:
package cn.how2j.col;
import java.util.ArrayList;
public class TestCollection {
public static void main(String[] args) {
ArrayList<Hero> heros = new ArrayList<Hero>();
// 对象加入 ArrayList 中
for (int i=0; i < 5; i++) {
// 添加
heros.add(new Hero("hero " + i));
}
Hero specialHere = new Hero("special hero");
// 添加到指定位置
heros.add(1, specialHere);
System.out.println(heros);
// 通过 set 修改指定位置的对象
heros.set(2, new Hero("修改"));
// 通过通过下标删除对象
heros.remove(1);
heros.remove(new String("hero 1"));
System.out.println(heros.remove(specialHere));
System.out.println(heros);
Hero hs[] = (Hero [])heros.toArray(new Hero[]{});
System.out.println("数组:" + hs);
// 清空 Arraylist
heros.clear();
System.out.println("ArrayList heros:\t" + heros);
}
}
遍历方法:
package cn.how2j.col;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestGeneric {
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("--------ArrayList 的遍历方式-------");
// 第一种遍历,for 循环
System.out.println("--------for 循环-------");
for (int i=0; i<heros.size(); i++) {
Hero h = heros.get(i);
System.out.println(h);
}
// 第二种遍历,迭代器
System.out.println("--------使用while的iterator-------");
Iterator<Hero> it = heros.iterator();
while (it.hasNext()) {
Hero h = it.next();
System.out.println(h);
}
// for 循环写法
System.out.println("--------使用for的iterator-------");
for (Iterator<Hero> it1 = heros.iterator(); it1.hasNext(); ) {
Hero hero = (Hero) it1.next();
System.out.println(hero);
}
// 第三种,for each 循环
System.out.println("--------使用 for each 循环-------");
for (Hero h : heros) {
System.out.println(h);
}
}
}