Collection-Iterator-foreach

一.Collection(java.util)
1.概述:具备相同性质的一类事物的汇聚的总体,称为集合.任何集合都包含三块内容:对外的接口/接口的实现/对集合运算的算法.
         java中使用Collection来表示单列集合顶层的接口.
         public interface Collection<E> extends Itretaor<E>{}
         注意:接口不能直接实例化,得须要其子类
2.特色及体系:Collection为顶层接口,仅描述集合的共性内容.经常使用的子接口为 List 和 Set.
     共性内容:
         (1)集合容器的的长度能够改变;
         (2)存储的是同一个类型的数据;
         (3)只能存引用数据类型(基本数据类型需进行装箱操做);
     List : 有序/容许重复;
     Set : 无序/不容许重复;
     Queue:队列接口;
     SortedSet:对集合中的数据进行排序;
3.经常使用方法:
     public boolean add(E e){}:向集合中插入对象;
     public boolean addAll(Collection<? extends E> c){}:插入一个集合的内容;
     public void clear(){}:清除此集合中的全部内容,可是保留该集合容器;
     public boolean contains(Object o){}:断定某一对象是否存在该集合中;
     public boolean containsAll(Collection<?> c){}:判断一组对象是否存在该集合中;
     public boolean equals(Object o){}:对象比较;
     public int hashCode(){}:哈希值;
     public boolean isEmpty(){}:判断集合是否为空;
     public Iterator<E> iterator(){}:为Iterator接口实例化;返回迭代器实例化对象;
     public boolean remove(Object o){}:删除指定对象;
     public boolean removeAll(Collection<?> c){}:删除一组对象;
     public boolean retainAll(Collection<?> c){}:保存指定内容;
     public int size(){}:求出集合大小;
     public Object[] toArray(){}:将一个集合变为对象数组;java

代码:算法

  1 import java.util.Collection;
  2 	import java.util.ArrayList;
  3 
  4 	public class Coll{
  5 		public static void main(String[] args){
  6 			//经过子类实例化接口对象,由于接口全为抽象没法直接实例化
  7 			Collection<String> c = new ArrayList<String>();
  8 			//添加元素add()
  9 			c.add("Rose");
 10 			c.add("Jack");
 11 			//查看集合内容
 12 			System.out.println(c);//[Rose, Jack]
 13 			//查看集合长度
 14 			System.out.println(c.size());//2
 15 			//查看是否包含tom
 16 			System.out.println(c.contains("tom"));//false
 17 			//查看是否包含Tom
 18 			c.add("Tom");
 19 			System.out.println(c.contains(new String("Tom")));//true--new String("Tom")返回一个"Tom"字符串
 20 			//删除指定对象remove()
 21 			c.remove("Rose");
 22 			System.out.println(c);//[Jack, Tom]
 23 			//删除全部对象-保留集合
 24 			c.clear();
 25 			System.out.println(c);//[]
 26 			//判断是否为空
 27 			System.out.println(c.isEmpty());//true
 28 		}
 29 	}

二.Iterator(java.util)
1.定义:专门操做集合的工具类,只要碰到集合的输出操做就必定使用Iterator接口
     pbulic interface Iterator<E>
2.经常使用方法:
     public boolean hasNext(){}:判断是否存在下一个值;
     public E next(){}:取出当前元素;
     public void remove(){}:移除当前元素;
3.注意事项:
(1)使用迭代器只能删除数据,不能添加数据;
(2)迭代器迭代数据的过程当中,不能使用集合自带的方法,改变集合的长度!不然会报异常:ConcurrentModificationException 并发修改异常!
(3)注意在构建迭代器的时候,其后<>内指定类型(如:Iterator<String> it = Collection.iterator();),不然运算会出错,仅打印没问题;数组

  1 代码1://需求:利用Iterator输出集合内容
  2 	import java.util.Collection;
  3 	import java.util.ArrayList;
  4 	import java.util.Iterator;
  5 
  6 	public class IteratorDemo{
  7 		public static void main(String[] args){
  8 			//经过子类实例化对象实例化Collection对象
  9 			Collection<String> c = new ArrayList<String>();
 10 			//向集合c中添加元素
 11 			c.add("Green");
 12 			c.add("Smith");
 13 			c.add("Philip");
 14 			//经过Collection的iterator方法,建立iterator对象
 15 			Iterator<String> it =c.iterator();	//注意在构建迭代器的时候,指定类型(此处为<String>),不然运算会出错,仅打印没问题
 16 			//输出集合c中的全部元素
 17 			while(it.hasNext()){
 18 				System.out.print(it.next()+"\t");//注意,建议判断一次仅调用一次next()方法,因为next()在输出的时候也会使指针向前移动,容易发生"NoSuchElementException"
 19 				//System.out.println("i like"+it.next());//java.util.NoSuchElementException
 20 			}
 21 		}
 22 	}
  1 代码2://需求:删除元素
  2 import java.util.Collection;
  3 import java.util.ArrayList;
  4 import java.util.Iterator;
  5 
  6 public class IteratorDemo{
  7 	public static void main(String[] args){
  8 		//经过子类实例化对象实例化Collection对象
  9 		Collection<String> c = new ArrayList<String>();
 10 		//向集合c中添加元素
 11 		c.add("Green");
 12 		c.add("Smith8");
 13 		c.add("Philip");
 14 		//foreach迭代
 15 		for(String s : c){
 16 			System.out.print(s+"\t")	//Green Smith8 Philip
 17 		}
 18 		System.out.println("====================")
 19 		//经过Collection的iterator方法,建立iterator对象
 20 		Iterator<String> it =c.iterator();//注意在构建迭代器的时候,指定类型(此处为<String>),不然运算会出错,仅打印没问题
 21 		//输出集合c中的全部元素
 22 		while(it.hasNext()){
 23 			//取出集合中的元素
 24 			String str = it.next();
 25 			//判断是否含有数字--正则(字符串最后一位是数字的)
 26 			if(str.matches("\\w+\\d")){
 27 				it.remove();
 28 			}else{
 29 				System.out.print(str+"\t");// Green Philip
 30 			}
 31 		}
 32 		System.out.print("删除带数字的名称后为:"+c+"\t");//删除带数字的名称后为:[Green, Philip]
 33 	}
 34 }
 35 

三.for--each
1.做用:加强for是JDK1.5以后出现的新特性,能够用于迭代(遍历/循环)集合或数组!可使用加强for替代迭代器,获取集合的元素内容!
2.格式:
     for(数据类型 变量名 : 对象名或数组名){
             集合或数组中的每个元素!
         }
3.代码:见二.Iterator代码2并发

本站公众号
   欢迎关注本站公众号,获取更多信息