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实体类的一个内部类。