代码1:
package com.atguigu.day15; import org.junit.Test; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; /* 集合:存储多个数据的,长度不固定 数组:数组的长度是固定的 Collection List:有序,按照添加的顺序,不唯一,可以添加重复的元素 ArraysList LinkedList Set:无序,不是按照添加的顺序输出,唯一,不可以添加重复元素 HashSet LinkedHashSet TreeSet * */ public class Demo10 { @Test public void test1(){ //多态 Collection col1 = new ArrayList(); //添加元素 col1.add(10);//内部Integer.valueof(10) col1.add(20); col1.add(new Date()); System.out.println(col1);//[10, 20, Fri Jan 07 11:02:11 CST 2022] Collection col2 = new ArrayList(); col2.add("张无忌"); col2.add("赵敏"); //add()会将一个集合作为一个元素处理 col1.add(col2); System.out.println(col1); //[10, 20, Fri Jan 07 11:08:01 CST 2022, [张无忌, 赵敏]] //addAll()会将集合中的每一个元素进行单独处理 col1.addAll(col2); System.out.println(col1); //[10, 20, Fri Jan 07 11:08:01 CST 2022, [张无忌, 赵敏], 张无忌, 赵敏] System.out.println(col1.size());//长度为6 //判断元素是否在集合内 boolean isExsit = col2.contains("张无忌"); System.out.println(isExsit);//true //清除指定元素 col1.remove(10); System.out.println(col1);//[20, Fri Jan 07 11:15:26 CST 2022, [张无忌, 赵敏], 张无忌, 赵敏] //删除集合 col1.removeAll(col2); System.out.println(col1);//[20, Fri Jan 07 11:15:26 CST 2022, [张无忌, 赵敏]] Collection col3 = new ArrayList(); col3.add(10); col3.add(20); col3.add(30); Collection col4 = new ArrayList(); col4.add(10); col4.add(20); col3.retainAll(col4); System.out.println(col3);//[10, 20] //判断集合是否为空 System.out.println("col3.isEmpty() = " + col3.isEmpty());//col3.isEmpty() = false //清除集合所有元素 col3.clear(); System.out.println(col3);//[] } @Test public void test2(){ Collection col1 = new ArrayList(); col1.add(10); col1.add(20); col1.add(30); col1.add("张无忌"); //遍历集合第一种方法 for (Object ojb:col1){ System.out.println(ojb); } //遍历集合第二种方法,通过创建迭代器实现 //hasNext()判断游标后面是否还有数据 //next()拿到指定的数据 Iterator iterator = col1.iterator(); while (iterator.hasNext()){ Object obj=iterator.next(); System.out.println(obj); } //转换类型 Collection col2 = new ArrayList(); col2.add("abc"); col2.add("efg"); col2.add("bpf"); for (Object obj:col2){ String s = (String)obj; System.out.println(s); } System.out.println("-------------------"); //泛型:规定你输入数据的类型 Collection<引用数据类型> Collection<String> col3 = new ArrayList<>(); col3.add("司马亮"); col3.add("司马玮"); col3.add("司马伦"); col3.add("司马囧"); for (String s:col3){ if (s.equals("司马伦")){ // col3.add("司马乂");//此时会报错,java.util.ConcurrentModificationException } } System.out.println(col3); System.out.println("-------------------"); Iterator<String> iterator1 = col3.iterator(); while (iterator1.hasNext()){ String s = iterator1.next(); if (s.equals("司马伦")){ // col3.add("司马乂");//此时会报错,java.util.ConcurrentModificationException iterator1.remove(); } } System.out.println(col3); /*modcount:记录集合的操作次数 在进行集合遍历的时候,不要使用集合对象直接新增或者删除元素,应该使用iterator去操作 */ } }
代码2:
package com.atguigu.day15; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Demo11 { public static void main(String[] args) { Collection<StudentTest> colTest = new ArrayList<>(); StudentTest stu1 = new StudentTest("陆小凤",98); StudentTest stu2 = new StudentTest("西门吹雪",38); StudentTest stu3 = new StudentTest("摘星子",58); colTest.add(stu1); colTest.add(stu2); colTest.add(stu3); Iterator<StudentTest> iterator = colTest.iterator(); while (iterator.hasNext()){ StudentTest stu = iterator.next(); if (stu.score<60){ iterator.remove(); } } System.out.println(colTest); } } class StudentTest{ String name; int score; public StudentTest() { } public StudentTest(String name, int score) { this.name = name; this.score = score; } @Override public String toString() { return "StudentTest{" + "name='" + name + '\'' + ", score=" + score + '}'; } }
输出:
[StudentTest{name='陆小凤', score=98}]
代码3: