菜鸡自学JAVA坎坷路day.18(容器4:practice1,iterator,Set的遍历方式,Map的两种遍历方式)

1.pratice1(将下面的数据存放到一个容器里面)


package Practice;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 雇员类  一个人对应一个对象  每一列都对应一个属性
 * @author Wang
 *
 */

public class Employee {
	private int id;
	private String name;
	private int salary;
	private String department;
	private Date hireDate;
	
	
	public Employee() {
		
	}
	
	public Employee(int id, String name, int salary, String department, String hireDate) {
		super();
		this.id = id;
		this.name = name;
		this.salary = salary;
		this.department = department;
		
		DateFormat format = new SimpleDateFormat("yyyy-MM");//注意一下字符串转成时间格式的这个写法
		try {
			this.hireDate = format.parse(hireDate);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}


	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public int getSalary() {
		return salary;
	}


	public void setSalary(int salary) {
		this.salary = salary;
	}


	public String getDepartment() {
		return department;
	}


	public void setDepartment(String department) {
		this.department = department;
	}


	public Date getHireDate() {
		return hireDate;
	}


	public void setHireDate(Date hireDate) {
		this.hireDate = hireDate;
	}
	
	
	
	
	
}
package Practice;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 一个简单的小练习
 * @author Wang
 *
 */

public class Practice1 {
	public static void main(String[] args)  {
		
	
		Employee e = new Employee();
	
		e.setId(0301);
		e.setName("高琪");
		e.setSalary(3000);
		e.setDepartment("项目部");
		
		String str = "2007-10";
		DateFormat format = new SimpleDateFormat("yyyy-MM");
		try {
			e.setHireDate(format.parse(str));//parse这个方法有一个异常  我在这里进行捕获
		} catch (ParseException e1) {
			e1.printStackTrace();
		}  //显然在这里我们用set方法来设置比较麻烦  我下面可以直接使用构造器来设置
		Employee e2 = new Employee(0302,"马士兵",3500,"教学部","2006-10");
		Employee e3 = new Employee(0303,"裴新",3550,"教学部","2006-10");
		
		
		//下一步就是把这些对象存放到容器里面了  下面我们用ArrayList   用到了泛型  等学到我们再来详细讨论     这里先认识一下<Employee>
		
		List<Employee> list = new ArrayList<Employee>();
		
		list.add(e);
		list.add(e2);
		list.add(e3);
		
		printHireDate(list);
		
		
	
	}
	
	
	public static void printHireDate(List<Employee> list) {//注意这个方法有一个参数   现在还不明是什么作用   待验证
		for(int i = 0; i<list.size();i++) {
			Date d = list.get(i).getHireDate();
			DateFormat f = new SimpleDateFormat("yyyy-MM");
			String str = f.format(d);//日期与字符串的转化   都是先设置格式  日期类型转化为字符串用format  反之用parse  
			System.out.println(str);
		}
	}
	
	
}

问题探究:

public static void printHireDate(List<Employee> list) {//注意这个方法有一个参数  List<Employee> list   现在还不明   待验证
		for(int i = 0; i<list.size();i++) {
			Date d = list.get(i).getHireDate();
			DateFormat f = new SimpleDateFormat("yyyy-MM");
			String str = f.format(d);//日期与字符串的转化   都是先设置格式  日期类型转化为字符串用format  反之用parse  
			System.out.println(str);
还有他的调用:
printHireDate(list);

解答:在定义方法的时候  他有一个形参  所以调用的时候要加参数,也是因为有参数list传进来  方法里面对list的操作才能实现; 


方法2:

package Practice;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 用Map来实现对数据的存储
 * @author Wang
 *
 */

public class practice02 {
	public static void main(String[] args) {
		//一个map对象对应一行记录!!!   这个方法可以理解为容器套容器的写法
		Map map = new HashMap();
		map.put("id", 0301);
		map.put("name", "高琪");
		map.put("salary", 3050);
		map.put("department","项目部");
		map.put("hireDate", "2007-10");  
		
		Map map2 = new HashMap();
		map2.put("id", 0302);
		map2.put("name", "马士兵");
		map2.put("salary", 3500);
		map2.put("department","教学部");
		map2.put("hireDate", "2006-10");  
		
		Map map3 = new HashMap();
		map3.put("id", 0302);
		map3.put("name", "裴新");
		map3.put("salary", 3500);
		map3.put("department","教学部");
		map3.put("hireDate", "2006-10");  
		
		
		List<Map> list = new ArrayList<Map>();
		
		list.add(map);
		list.add(map2);
		list.add(map3);
		
		printEmpName(list);
		
	}
	
	public static void printEmpName(List<Map> list){
		for(int i=0;i<list.size();i++){
			Map tempMap = list.get(i);
			System.out.println(tempMap.get("name")+"--"+tempMap.get("hireDate"));
		}
	}

}

2.iterator(迭代器[接口])


package TestSet;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;


/**
 * set的遍历方式  用迭代器遍历   
 * iterator  他是Collention中定义的一个接口所以容器都可以用它来遍历
 * @author Wang
 *
 */

public class ergodicSet {
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add("aaa");
		list.add("111");
		list.add("aaa2");
		list.add("222");
		
		for(int i=0;i<list.size();i++) {//对于list这种有顺序的容器来说   我们用这种方法遍历即可
			System.out.println(list.get(i));
		}
		
		System.out.println("********************");
		
		Iterator ite = list.iterator();//调用list.iterator()这个方法会返回一个 iterator对象;
		while(ite.hasNext()) {//判断还有没有下一个元素  直到将arraylist里面的元素遍历完;
			System.out.println(ite.next());//next()的这个方法就是返回刚遍历完的那个元素
			ite.remove();
			//ite.remove();   删除  是删除的next那个元素     所以不能连续删除      
		}
		
		System.out.println("********************");
		
		Set set = new HashSet();//注意HashSet他是一个类呀  所以他的首字母是大写的
		set.add(666);
		set.add(777);
		set.add("uuu");
		
		for(Iterator ite2 = set.iterator();ite2.hasNext();) {//对于iterator的用法还可以用while   第一步就是定义  第二步就是条件判断是否还有下一个
			System.out.println(ite2.next());//对于set这种没有顺序的容器就只能来用iterator来遍历了
		}
		
	}
}

3.Map的两种遍历方式

package TestMap;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/**
 * 测试对Map的遍历
 * @author Wang
 *
 */

public class ergoticMap {
	public static void main(String[] args) {
		Map map = new HashMap();
		
		map.put(1,"a");
		map.put(2,"b");
		map.put(3,"c");
		
		//遍历Map的第一种方式
		Set keys = map.keySet();//让Map获得set视图   进一步调用iterator ; map没有继承Collection  接口 没有实现iterator方法
		for(Iterator iter = keys.iterator();iter.hasNext();){//遍历Map的key
			int key1 = (int) iter.next();
			System.out.println(key1+"---"+map.get(key1)); //输出的时候可以根据key  来输出value
		}
				
		//遍历Map的第二种方式
		Set<Entry> set2 = map.entrySet();//基本相当于把Map放到Set那里了
		for(Iterator iter = set2.iterator();iter.hasNext();){
			Entry e = (Entry) iter.next();//每个e对相当于Map里面的一个元素  键值对
			System.out.println(e.getKey()+"---"+e.getValue());
	   }
		
	}

}


注意:

Map的两种遍历方法:(Set的实现就是只要Map的Key)

keySet()遍历是先将keys存入Set集合,再遍历该集合中的keys,再用 遍历得到的key取得相应的值 。value= get(key);获得value。


entrySet()则是把所有的键值对存入Set集合。一对一对的存的。得到所有的键值对,直接遍历该集合得到单个的键值对Map.Entry的对象。再用键值对这种类的方法getKey()和getValue()得到相应的健与值。


keySet().表示获得所有key 的一个集合;一个是entrySet ()表示获得所有“Entry”的集合(基本相当于把Map放到这里面了)。 其中“Entry”即是Map.Entry<T,T>   类,是map实体类的一个内部类。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值