集合常用的方法--073

package com.sqf.thread;

import java.util.ArrayList;
import java.util.Collection;

/*
集合:集合是存储对象数据的集合容器。

集合比数组的优势:
	1. 集合可以存储任意类型的对象数据,数组只能存储同一种数据类型 的数据。
	2. 集合的长度是会发生变化的,数组的长度是固定的。
	

-------| Collection  单例集合的跟接口。 
----------| List  如果是实现了List接口的集合类,具备的特点: 有序,可重复。
----------| Set   如果是实现了Set接口的集合类,具备特点: 无序,不可重复。

Collection接口中的方法:
	
	增加
		add(E e)  添加成功返回true,添加 失败返回false.
		addAll(Collection c)  把一个集合 的元素添加到另外一个集合中去。
	
	删除
		clear() 清空所有元素
		remove(Object o)  移除對象
		
		removeAll(Collection  c)  刪除当前集合中,与c集合的交集
		retainAll(Collection  c)   保留当前集合与c的交集元素,其他的元素一并删除。
	
	查看
		size()  查看集合的元素个数

	
	判断
		isEmpty() 
		contains(Object o) 
		containsAll(Collection<?> c) 
	
	迭代
		toArray() 
		iterator() 

*/

class Person{
	
	String name;
	
	@Override
	public String toString() { //注意重写toString方法
		return name;
	}
	
}

class Demo5{
	
	public static void main(String[] args) {
		Collection list = new ArrayList();
		
		/*
		 增加
			add(E e)  添加成功返回true,添加 失败返回false.
			addAll(Collection c)  把一个集合 的元素添加到另外一个集合中去。 
		 */
		//1.add()
		list.add("123");
		list.add("小明");
		
		//2.addAll();
		Collection list1 = new ArrayList();
		Person p = new Person();
		p.name = "dsada";
		Person p1 = new Person();
		p1.name = "dasdsa";
		list1.add(p);
		list1.add(p1);
		list.addAll(list1);
		
		/*
			删除
			clear() 
			remove(Object o) 
			
			removeAll(Collection  c) 
			retainAll(Collection  c)   
		 */
		
		//list.clear();
		
		//list.remove("123");//1.删除普通的对象
		/*
		  //2.地址的對象
		  Person p2 = new Person();
		  p2.name = "dasdsa"; 
		   需要把p2指向list与中person對象的地址
		*/
		
		//list.removeAll(list1);
		
		//list.retainAll(list1);
		
		/*
		 	查看   size()  
		 */
		list.size();
		
		/*
			判断
			isEmpty() 
			contains(Object o) 
			containsAll(Collection  c) 
		 */
		 
	}
	
}


package com.sqf.thread;

import java.util.ArrayList;
import java.util.Collection;

/*
    判断
	 isEmpty() 
	contains(Object o) 一个集合中是否包含某一个对象
	containsAll(Collection c) 一个集合中是否包含另一个集合
 */

class Labour{
	int id;
	
	String name;
	
	public Labour(int id,String name) {
		this.id = id;
		this.name = name;
	}
	
	@Override
	public String toString() {
		return "编号:" + this.id + "姓名:" + this.name;
	}
	
	@Override
	public boolean equals(Object obj) {

		Labour labour = (Labour) obj;
		
		return this.id == labour.id;
	}
	
}

public class Demo6 {
	
	public static void main(String[] args) {
		Collection list = new ArrayList();
		
		Labour labour = new Labour(110, "小张");
		Labour labour1 = new Labour(111, "小王");
		Labour labour2 = new Labour(112, "小吴");
		list.add(labour);
		list.add(labour1);
		list.add(labour2);
		
		System.out.println("一个集合中是否包含某一个对象?" + list.contains(new Labour(111, "小王")));
		
		
		Collection list1 = new ArrayList();
		list.add(labour1);
		list.add(labour2);
		
		System.out.println("一个集合中是否包含另一个集合?" + list.containsAll(list1));
		//其实contains方法内部是依赖于equals方法进行比较的。需要重写equals方法
	}
	
}


package com.sqf.thread;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
迭代
	toArray() 
	iterator()
	
	Iterator类
	迭代器的方法:
		hasNext()   问是否有元素可遍历。如果有元素可以遍历,返回true,否则返回false 。
	 	next()    获取当前指针指向的元素并返回当前的元素,然后指针指向下移动一个单位
	 	remove()  移除迭代器最后一次返回 的元素。
	
	
		NoSuchElementException 没有元素的异常。 
		出现的原因: 没有元素可以被迭代了。。。
	
*/

class Computer{

	int id;
	String name;
	
	public Computer(int id,String name) {
		this.id = id;
		this.name = name;
	}
	
	@Override
	public String toString() {
		return "id:"+id + "  name:" + name;
	}
	
}



public class Demo7 {
	
	public static void main(String[] args) {
		Collection list = new ArrayList();
		
		Computer c1 = new Computer(110, "联想");
		Computer c2 = new Computer(111, "苹果");
		Computer c3 = new Computer(112, "戴尔");
		list.add(c1);
		list.add(c2);
		list.add(c3);
		
		//1.toArray() 
		/*
			Object[] obj = list.toArray();
			for(int i=0;i<obj.length;i++){
				Computer c = (Computer) obj[i];
				System.out.println("编号:" + c.id + "品牌:" + c.name);
			}
		*/
		
		//2.iterator()
		Iterator it = list.iterator();
		//返回一个迭代器    疑问:iterator()方法返回的是一个接口类型,
		//为什么接口又可以调用方法可以使用呢?  iterator 实际 上返回的是iterator接口的实现类对象。
		while(it.hasNext()){
			Computer c = (Computer) it.next();
			System.out.println("编号:" + c.id + "品牌:" + c.name);
		}
		
		//it.next();
		//it.remove();  //移除的为第一个元素
		
		//System.out.println(list);
	}
	
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值