集合的特点:用于存储对象的容器(存储对象的引用),集合的长度是可变的,集合中不可以存储基本数据类型值
1 /* 2 person p = new person(); 3 ArrayList a = new ArrayList(); 4 al.add(p);//不表示将p这个对象放进了al这个容器里了 表示了将p这个对象的地址放进al容器里使al容器指向对象p 5 容器中不可能存放的是对象的实体,只能存放对象的地址 6 */
集合与数组的区别:
集合中可以存储任意的对象,且长度是可变的
数组中只能存储同一类型的数据,且长度是不可变的。
Collection的常用共性方法:
添加元素 boolean add(Object);
1 public static void addDemo() { 2 ArrayList a1 = new ArrayList(); 3 a1.add("java01"); 4 a1.add("java02"); 5 a1.add("java03"); 6 a1.add("java04"); 7 System.out.println(a1);//可以直接打印集合 8 }
删除元素 boolean remove(Object); 返回的是boolean.(List集合下也可以通过指定的角标来删除某个对象,返回的是被删除的那个对象)
1 public static void deleteDemo() { 2 ArrayList a1 = new ArrayList(); 3 a1.add("java01"); 4 a1.add("java02"); 5 a1.add("java03"); 6 a1.add("java04"); 7 boolean b = a1.remove("java03"); 8 System.out.println(a1); 9 System.out.println(b); 10 }
清空元素:void clear();如果集合不支持该方法会抛出该异常:UnsupportedOperationException
1 public static void clearDemo() { 2 ArrayList a1 = new ArrayList(); 3 a1.add("java01"); 4 a1.add("java02"); 5 a1.add("java03"); 6 a1.add("java04"); 7 a1.clear(); 8 System.out.println(a1); 9 }
判断某元素是否存在:boolean contains(Object)
1 public static void containsDemo() { 2 ArrayList a1 = new ArrayList(); 3 a1.add("java01"); 4 a1.add("java02"); 5 a1.add("java03"); 6 a1.add("java04"); 7 boolean b = a1.contains("java03"); 8 System.out.println("java03是否存在:"+b); 9 }
获取集合中元素的个数:int size();
1 public static void sizeDemo() { 2 ArrayList a1 = new ArrayList(); 3 a1.add("java01"); 4 a1.add("java02"); 5 a1.add("java03"); 6 a1.add("java04"); 7 int a = a1.size(); 8 System.out.println("size:"+a); 9 }
判断集合是否为空:boolean isEmpty();
1 public static void isEmptyDEmo() { 2 ArrayList a1 = new ArrayList(); 3 a1.add("java01"); 4 a1.add("java02"); 5 a1.add("java03"); 6 a1.add("java04"); 7 boolean b = a1.isEmpty(); 8 System.out.println("集合是否为空?:"+b); 9 }
取交集:al1中只会保留和al2中相同的元素,如果没有交集就为空:boolean retainAll(Object)
1 public static void retainAllDemo() { 2 ArrayList al1 = new ArrayList(); 3 al1.add("java01"); 4 al1.add("java02"); 5 al1.add("java03"); 6 al1.add("java04"); 7 8 ArrayList al2 = new ArrayList(); 9 al2.add("java01"); 10 al2.add("java02"); 11 al2.add("java05"); 12 al2.add("java06"); 13 14 //boolean b = al1.retainAll(al2); 15 //System.out.println(b); 16 System.out.println(al1); 17 System.out.println(al2); 18 19 20 boolean b = al1.removeAll(al2);//把相同的删除 21 System.out.println(b); 22 System.out.println(al1); 23 }
特殊方法迭代器:取出集合中的元素:Iterator<e> iterator();(返回的是一个Iterator接口)
Iterator接口中的方法:
判断还有没有元素:boolean hasNext()
迭代下一个元素:E next();
删除元素:void remove()
1 public static void iteratorDemo() { 2 ArrayList al = new ArrayList(); 3 al.add("java01"); 4 al.add("java02"); 5 al.add("java03"); 6 al.add("java04"); 7 8 /*注意: 9 在迭代的时候要判断一次获取一次,也就是判断一次hasNext()一次,只能next()一次 10 并且在迭代过程中不能使用集合的方法操作集合,会发生并发异常 11 */ 12 Iterator it = al.iterator(); 13 while(it.hasNext()){ 14 System.out.println(it.next()); 15 } 16 /* 17 使用for可以节省空间 18 for (Iterator it = al.iterator(); it.hasNext();) { 19 if(it.next().equals("java03")) 20 it.remove(); 21 } 22 System.out.println(al); 23 */ 24 }