java集合及遍历器的初步认识

Collection概念:
  Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
  注释:JDK 不提供此接口的任何直接 实现:它提供更具体的子接口,更具体的实现类
 Collection基本功能:
 添加功能:

  boolean add(Object e)
  删除功能:
  void clear() :删除集合中所有元素(暴力删除)
  boolean remove(Object o):删除集合中的指定元素
  判断功能:
  boolean contains(Object o):集合中是否包含指定的元素
  获取功能:
  int size() :获取集合中的元素数
举例:
* @author 田伟
 *
 */
public class CollectDome {
public static void main(String[] args) {
	Collection c=new ArrayList();//接口不能实例化
	//System.out.println(c);空的数组
	//添加功能
	c.add("hello");
	c.add("world");
	c.add("java");
	System.out.println(c);
    //删除功能
	//c.clear();
	//System.out.println(c);
	System.out.println(c.remove("java"));
	System.out.println(c);
	//集合中是否包含对应元素
	System.out.println(c.contains("hello"));
	System.out.println(c.contains("java"));
	//获取集合长度
	System.out.println(c.size());
	//判断集合是否为空
	System.out.println(c.isEmpty());
}
}
 Colleciton的集合的高级功能:
  boolean addAll(Collection c)  :添加一个集合中的所有元素
  boolean removeAll(Collection c):删除的高级功能(思考:删除一个算是删除还是删除所有算是删除?)
  boolean containsAll(Collection c):包含所有元素算是包含,还是包含一个算是包含
  交集功能:
  boolean retainAll(Collection c):A集合对B集合取交集,交集的元素到底是去A集合还是去B集合中,返回值boolean
 举例:
* @author 田伟
 *
 */
public class CollectionDemo2 {
public static void main(String[] args) {
	//创建集合
	Collection c=new ArrayList();
	c.add("asd1");
	c.add("asd2");
	c.add("asd3");
	c.add("asd4");
//    c.add("asd8");
	//创建集合2
	Collection c2=new ArrayList();
	c2.add("asd1");
	c2.add("asd2");
	c2.add("asd3");
	c2.add("asd4");
    c2.add("asd5");
    c2.add("asd6");
    c2.add("asd7");
    System.out.println(c);
    System.out.println(c2);
    System.out.println("-------------");
    //将c2中的元素,添加到c中
    /*System.out.println(c.addAll(c2));
    System.out.println(c);
    System.out.println(c2);*/
    //删除一个算删除
    /*System.out.println(c.removeAll(c2));
    System.out.println(c);
    System.out.println(c2);*/
    //包含所有元素算包含
    /*System.out.println(c.containsAll(c2));
    System.out.println(c);
    System.out.println(c2);*/
    System.out.println(c.retainAll(c2));
    System.out.println(c);
    System.out.println(c2);
    //交集的部分会显示出来,在c1中,没有的就不会显示,看a是否发生变化,若有则true,否则则flase.
}
}
转换功能:Object[] toArray() :将集合转换成数组
  需求:要给集合中存储字符串类型的数据,并遍历
举例:
 * @author 田伟
 *
 */
public class CollectionDemo3 {
public static void main(String[] args) {
	Collection c=new ArrayList();
	c.add("retain");
	c.add("hello");
	c.add("world");
	System.out.println(c);
	//需要去转换;
	Object[] arr=c.toArray();
	for(int i=0;i<arr.length;i++) {
		System.out.println(arr[i]);
		String s=(String)arr[i];
		System.out.println(s+"----"+s.length());
	}
}
需求:存储自定义对象并遍历
 有5个学生,学生有姓名,年龄,遍历5个学生,输出5个学生对应的信息(集合改进)
1)创建一个学生类
2)在测试类中,创建集合对象
3)创建5个具体学生对象,并且添加集合中
4)将集合转换数组

5)遍历

6)输出

举例:

 * @author 田伟
 *
 */
public class CollectionDemo4 {
     public static void main(String[] args) {
		Collection c=new ArrayList();
		Student s1=new Student("胡歌",27);
		Student s2=new Student("靳东",18);
		Student s3=new Student("黄晓明",28);
		Student s4=new Student("科比",33);
		Student s5=new Student("詹姆斯",30);
		c.add(s1);
		c.add(s2);
		c.add(s3);
		c.add(s4);
		c.add(s5);
		Object[] arr=c.toArray();
		for(int i=0;i<arr.length;i++) {
//			System.out.println(arr[i]);
			Student s=(Student)arr[i];
			System.out.println(s.getName()+"----"+s.getAge());	
		}
		
	}    
}

Iterator 

iterator() :集合的迭代器方法(获取集合的迭代器)

  集合的专有遍历方式:迭代器遍历
  Iterator :接口中有以下的方法:
  boolean hasNext() :如果有元素可以迭代,那么返回true,否则返回false
  Object next()返回迭代的下一个元素。 
 存储 String类型的元素
* @author 田伟
 *
 */
public class IteratorDemo1 {
public static void main(String[] args) {
	Collection c=new ArrayList();
	c.add("hello");
	c.add("retain");
	c.add("iterator");
	Iterator it=c.iterator();
	/*System.out.println(it.hasNext());
	System.err.println(it.next());
	System.out.println(it.hasNext());
	System.out.println(it.next());*/
	while(it.hasNext()) {
		String s=(String)it.next();
		System.out.println(s+"----"+s.length());
	}
	}
}

存储自定义对象并遍历(使用专有遍历方式) 

举例:

 * @author 田伟
 *
 */
public class IteratorDemo2 {
public static void main(String[] args) {
	Collection c=new ArrayList();
	Student s1=new Student ("靳东",28);
	Student s2=new Student ("胡歌",18);
	Student s3=new Student ("黄晓明",30);
	c.add(s1);
	c.add(s2);
	c.add(s3);
	Iterator it =c.iterator();
	while(it.hasNext()) {
		Student s=(Student)it.next();
		System.out.println(s.getName()+"---------"+s.getAge());
	}
}
}
  注释:1)it.next(),只使用一次即可,使用多次,会出现问题(it.next(),每次使用的时候都是返回一个对象)
           2)遍历的时候使用的while循环,可不可以使用for循环呢?

 举例:
/**
 * @author 田伟
 *
 */
public class IteratorDemo3 {
public static void main(String[] args) {
	
		Collection c=new ArrayList();
		Student s1=new Student ("靳东",28);
		Student s2=new Student ("胡歌",18);
		Student s3=new Student ("黄晓明",30);
		c.add(s1);
		c.add(s2);
		c.add(s3);
		for(Iterator it=c.iterator();it.hasNext();) {
			Student s=(Student)it.next();
			System.out.println(s);
		}
}
}






猜你喜欢

转载自blog.csdn.net/wt5264/article/details/80242785
今日推荐