package C12_18;import java.util.ArrayList;public class joy {public static void main(String[] args) {show();//重写equals方法,移除集合里面的元素。public static void show() {ArrayList<dog> al = new ArrayList<dog>();al.add(new dog("jj", 12));al.add(new dog("bb", 10));al.add(new dog("cc", 18));//遍历方式1 arr.get(index);for (int i = 0; i < al.size(); i++) {System.out.println(al.get(i).name);}System.out.println("--------");//遍历方式2 把集合转换成数组Object[] array = al.toArray();for (int i = 0; i < array.length; i++) {System.out.println(al.get(i).name);}System.out.println("--------");//遍历方式3 foreach (还有一种用迭代器)al.remove(new dog("cc", 18));for (dog d : al) {System.out.println(d.toString());}}}class dog {String name;int age;public dog(String name, int age) {super();this.name = name;this.age = age;}public dog() {super();}public String toString() {return this.name;}public boolean equals(Object o) {if (o instanceof dog) {dog d = (dog)o;return d.name.equals(this.name) && d.age == this.age;}return false;}//这个只针对自定义引用对象啦。//之前remove方法里面比较的是对象,就自然不相等啦,可是当我重写了equals方法,只要满足age和name相等,就保证可以移除啦。//如果是自定义引用类型, 就注意equals方法是否要重写。
}
Result:
jj
bb
cc
--------
jj
bb
cc
--------
jj
bb
Remove 方法 Else里面的equals方法重写了object里面的equals方法, 比较对象。
但是remove的对象是一个新的学生, 用上面的方法肯定是返回false , 不可移除。所以重写了只要age 和 name 相同便可移除。
LinkedList
package C12_18;import java.util.LinkedList;public class testLink {public static void main(String[] args) {// linklistLinkedList<String> heroName = new LinkedList<String>();heroName.addFirst("ironMan");heroName.addFirst("bitaMan");heroName.addLast("spiderMan");System.out.println(heroName);heroName.removeFirst();System.out.println(heroName);for (String str : heroName) {System.out.println(str);}/** [bitaMan, ironMan, spiderMan]* [ironMan, spiderMan]* */}}/*比较LinkedList(链表) 与 ArrayList(集合)*LinkedList 查询速度慢, 用于插入快(有快捷的添加方法, 每个元素是相连的。)。*ArrayList 查询速度快下标, 用于插入慢。 * *相同:都可遍历, 存储大量数据, 优于数组的快速增删改。 * */