package demo.assemble;
import java.util.*;
class Student {
private String name = "hh";
private int age = 18;
Student() {
}
Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {//如果传入同一个对象
return true;
}
if (!(obj instanceof Student)) {//如果传入类型不是Student
return false;
}
Student p = (Student) obj;
if (this.name.equals(p.name) && this.age == p.age) {
return true;
} else {
return false;
}
}
@Override
public String toString() {
return "名字:" + name + "年龄:" + age;
}
String getName() {
return name;
}
void setName(String name) {
this.name = name;
}
int getAge() {
return age;
}
}
class ArrayListTest {
public static void main(String[] args) {
Collection coll = new ArrayList();//ArrayList不同步 //Collection集合根类
coll.add("abc1");
coll.add("abc2");
coll.add(true);
Student s1 = new Student("a", 1);
Student s2 = new Student("a", 1);
coll.add(s1);
coll.add(s2);
//s.setName("xxxxxxxxxxxxxxxxx");//集合中储存的是引用,当外面对象发生修改时,集合也发生修改
//show(coll);//单一操作 是否包含指定元素contains、删除指定元素remove、是否为空isEmpty、集合长度size
//showAll(coll);//All操作 集合与集合间的操作∪、∩、含于
iteratorDemo(coll);//迭代器遍历(迭代器是内部类实现的)
//showList();//List特有方法 指定位置插入add、删除remove、修改set、获取get、切割subList,listIterator迭代器可添加add、修改set
//coll = getSingleElement(coll);
//System.out.println("剔除重复元素后:" + coll);
}
//剔除集合中重复元素
private static Collection getSingleElement(Collection coll) {
System.out.println("初始化ArrayList:" + coll);
//须知:
System.out.println("是否含有指定对象:" + coll.contains(new Student("a", 1)));//通过对象的equals()判断
coll.remove(new Student("a", 1));//再删除。通过对象的equals删除
System.out.println("删除后:" + coll);
coll.add(new Student("a", 1));
coll.add(new Student("a", 1));
System.out.println("包含重复元素:" + coll);
Iterator it = coll.iterator();
ArrayList list = new ArrayList();//用于存放coll中不重复元素
while (it.hasNext()) {
Object o = it.next();
if (!list.contains(o)) {//如果新的数组列表没有it.nexd(),就加入数组
list.add(o);
}
}
return list;
}
//List特有方法 指定位置插入add、删除remove、修改set、获取get、切割subList,listIterator迭代器可添加add、修改set
private static void showList() {
List list = new ArrayList();
list.add("abc1");
list.add("abc2");
list.add(0, "abc0");
System.out.println("指定位置插入元素:" + list);//可选操作
System.out.println(list + "__删除指定下标元素(返回该元素):" + list.remove(0));//可选操作(自右至左执行)
System.out.println("删除指定下标元素后:" + list);
System.out.println("修改指定下标元素:" + list.set(0, "abc11"));//abc1 //可选操作
System.out.println("修改指定下标元素:" + list);//[abc11, abc2]
System.out.println("获取指定下标元素:" + list.get(0));//abc11 //越界抛异常IndexOutOfBoundsException
System.out.println("获取子列表:" + list.subList(1, 2));//abc2 [ )
//subList 返回的是 ArrayList 的内部类 SubList ,并不是 ArrayList ,而是
//ArrayList 的一个视图,对于 SubList 子列表的所有操作最终会反映到原列表上。
System.out.println(list);
ListIterator it = list.listIterator();//listIterator列表迭代器(迭代器升级!可进行添加,修改操作)
//正向遍历
while (it.hasNext()) {//遍历list,如果有abc2,则改为abc22
Object o = it.next();
if (o.equals("abc2")) {
it.set("abc22");//用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。
it.add("iiiiiii");//并在后面添加一个元素
}
}
System.out.println("遍历修改后:" + list);
System.out.println("反向迭代器(必须先进行正向迭代):");
while (it.hasPrevious()) {
System.out.println(it.previous());
}
}
//迭代器遍历
private static void iteratorDemo(Collection coll) {
Iterator it = coll.iterator();
for (int i = 0; i < coll.size(); i++) {//根据size遍历
// System.out.println(it.next());
}
System.out.println("删除前:");
while (it.hasNext()) {//根据下一个有无元素进行遍历 //如果仍有元素可以迭代,则返回 true。
System.out.println(it.next());
}
for (Iterator it2 = coll.iterator(); it2.hasNext(); ) {//临时遍历
//不允许并发修改(迭代器和集合同时操作),因为迭代器只获取了一次,集合中添加元素后,迭代器并不知道
Object o = it2.next();
//解决方案:coll.remove(),coll.add后break,或者,it2.remove()
if ("abc2".equals(o)) {
// coll.remove("abc2");
//coll.add("zzz");
//it2.remove();//不需要break
break;
}
}//即,不能影响迭代器迭代,或者干脆不迭代
System.out.println("删除后:");
for (Object o : coll) {
System.out.println(o);
}
/*
//根据对象遍历
for (Iterator it = coll.iterator(); it.hasNext(); ) {
Object o = it.next();
if (o instanceof Student) {
Student s = (Student) o;
System.out.println(s.getName() + "---" + s.getAge());
} else if (o instanceof String) {
System.out.println(o);
}//...
}*/
}
//All操作 集合与集合间的操作∪、∩、含于
private static void showAll(Collection coll) {
Collection coll2 = new ArrayList();
coll2.add("abc1");
coll2.add(false);
System.out.println("coll2:" + coll2);
System.out.println("coll是否包含coll2内所有元素:" + coll.containsAll(coll2));
//System.out.println("移除coll中包含coll2的元素(取差集):" + coll.removeAll(coll2));//可选操作(不包含则不删)
//System.out.println("移除后coll:" + coll);
System.out.println("仅保留coll中包含coll2的元素(取∩):" + coll.retainAll(coll2));//可选操作
System.out.println("保留后:" + coll);
System.out.println("添加全部coll2中的元素到coll,包括重复元素(取∪):" + coll.addAll(coll2));//可选操作
System.out.println("添加全部后" + coll);
System.out.println("All操作结束:" + coll);
}
//单一操作 是否包含指定元素contains、删除指定元素remove、是否为空isEmpty、集合长度size
private static void show(Collection coll) {
System.out.println(coll);
System.out.println("判断是否包含指定元素:\"abc1\":" + coll.contains("abc1"));
System.out.println("判断与指定元素是否相等:\"abc1\":" + coll.equals("abc1"));
System.out.println("是否为空:" + coll.isEmpty());
System.out.println("删除true:" + coll.remove("true"));//若无该元素,则return false //可选操作
System.out.println("删除后:" + coll);//成功删除应不加"..."
System.out.println("集合长度:" + coll.size());
System.out.println("单一操作结束:" + coll);
}
}
通用Collection_ArrayList迭代器常用方法
最新推荐文章于 2024-01-09 14:03:12 发布
本文介绍了如何创建和操作Java中的Student类实例,展示了如何使用ArrayList进行元素添加、去除重复、迭代遍历以及各种集合操作,如contains、equals、remove、isEmpty和size等。
486

被折叠的 条评论
为什么被折叠?



