java map

如下是一个map学习的小练习,主方法中创建了map和ss实现了两个独立的map集合,其中需要建立MyStudent和MySubject类,具体代码如下:

1.TheMainClass

package com.ma.www.map;

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

public class TheMainClass {

public static void main(String[] args) {
// TODO Auto-generated method stub
//map本身是一个接口,需要子类向上转型实现功能,常用子类hashmap
//map接口带两个泛型,K:key,V:value
Map<MyStudent, MySubject> map = new HashMap<>();

MySubject subject = new MySubject("English", "Tom");
MyStudent studentOne = new MyStudent("mystudent1", 18, 100);
MyStudent studentTwo = new MyStudent("mystudent2", 28, 52);
MyStudent studentThree = new MyStudent("mystudent3", 38, 10);
//将做好的student和subject添加到map中,用put
map.put(studentOne, subject);
map.put(studentTwo, subject);
map.put(studentThree, subject);
MySubject subject2 = new MySubject("chinese", "Lee");
MyStudent studentFour = new MyStudent("mystudent4", 18, 50);
map.put(studentFour, subject2);
//遍历:keySet和entry
//keySet,map中key是唯一的,可通过key来找到value
//可以让map将所有的key的值都取出来放在一个set中,然后遍历这个set,取出其中保存的key值
Set<MyStudent> keyset=map.keySet();//让map将所有的key的值都取出来放在一个set中
System.out.println(keyset);
//将key一个一个地取出来,也就是遍历keySet
Iterator<MyStudent> it = keyset.iterator();
while (it.hasNext()) {
MyStudent key = (MyStudent) it.next();//这里的key就是map中key的值
MySubject v = map.get(key);
System.out.println(key.toString()+" "+v.toString());
}
System.out.println("************************************");
//map遍历:keySet和entry
//第二种用Entry来进行。
//entry:map中保存的是一个一个的键值对
//每一个键值对包含一个key和value,可以将这个键值对封装成一个entry的对象
//map就变成了由entry组成的一个数据结构
//让map将自己所有的键值对封装成entry的对象,然后将这些entry对象放到一个Set中
//这个set就是entrySet
Set<Entry<MyStudent, MySubject>> entrySet = map.entrySet();
//entrySet是由键值对组成的对象也就是Entry<MyStudent, MySubject>对象组成的。
//下面开始遍历
Iterator<Entry<MyStudent, MySubject>> entryIt=entrySet.iterator();
while (entryIt.hasNext()) {
Entry<MyStudent, MySubject> e= entryIt.next();
// 打印e对应的key和value。
// 因为e作为Entry的对象,保存了一个键值对。
// e中有一个属性为key值,一个属性为value值。
// 下面通过get方法,获取到key和value的值。
MyStudent key=e.getKey();
MySubject value=e.getValue();
System.out.println(key.toString()+" "+value.toString());
}

//以上的entry遍历可用下面的foreach实现
System.out.println("************************************");
for (Entry<MyStudent, MySubject> e : map.entrySet()) {
System.out.println(e.getKey()+" "+e.getValue());
}


}
}

2.MyStudent

 

package com.ma.www.map;

public class MyStudent {
private String name;
private int age;
private double score;
public MyStudent() {
super();
}
public MyStudent(String name, int age, double score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
long temp;
temp = Double.doubleToLongBits(score);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MyStudent other = (MyStudent) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (Double.doubleToLongBits(score) != Double.doubleToLongBits(other.score))
return false;
return true;
}
@Override
public String toString() {
return "MyStudent [name=" + name + ", age=" + age + ", score=" + score + "]";
}


}

 

3.MySubject

package com.ma.www.map;

public class MySubject {
private String subjectName;
private String teacherName;
public MySubject() {
super();
}
public MySubject(String subjectName, String teacherName) {
super();
this.subjectName = subjectName;
this.teacherName = teacherName;
}
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public String getTeacherName() {
return teacherName;
}
public void setTeacherName(String teacherName) {
this.teacherName = teacherName;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((subjectName == null) ? 0 : subjectName.hashCode());
result = prime * result + ((teacherName == null) ? 0 : teacherName.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MySubject other = (MySubject) obj;
if (subjectName == null) {
if (other.subjectName != null)
return false;
} else if (!subjectName.equals(other.subjectName))
return false;
if (teacherName == null) {
if (other.teacherName != null)
return false;
} else if (!teacherName.equals(other.teacherName))
return false;
return true;
}
@Override
public String toString() {
return "MySubject [subjectName=" + subjectName + ", teacherName=" + teacherName + "]";
}

}

 

posted @ 2017-05-03 15:23  maningyanin  阅读(392)  评论(0编辑  收藏  举报