CoreJava基础之(集合的遍历)小练习总结

1.写一个Worker类,装入集合中去掉重复的对象

【考察重点:重写equals()方法和HashCode()方法

package day18;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;

public class Test01 {
	public static void main(String[] args) {
			// TODO Auto-generated method stub
			//1.重写hashcode()和equals方法 worker
			Set<Worker> set=new HashSet<Worker>();
			set.add(new Worker("zhangsan",66));
			set.add(new Worker("lisi",15));
			set.add(new Worker("wangwu",54));
			set.add(new Worker("lisi",15));
			for (Worker worker : set) {
				System.out.println(worker);
			}
		}
}
	class Worker{
		String name;
		double salary;
		public Worker(String name, double salary) {
			super();
			this.name = name;
			this.salary = salary;
		}
		@Override
        /*第一种hashcode()方法
		public int hashCode() {
			return Objects.hash(name);
		}*/
        //第二种hashCode()方法
        @Override
		public int hashCode() {
			final int prime = 31;
			int result = 1;
			result = prime * result + ((name == null) ? 0 : name.hashCode());
			long temp;
			temp = Double.doubleToLongBits(salary);
			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;
            //如果对象的类型不一样 返回false
			if (getClass() != obj.getClass())
				return false;
			Worker other = (Worker) obj;
            //如果属性值为空
			if (name == null) {
                //其他的属性值不为空 就说明不相等
				if (other.name != null)
					return false;
               //如果属性值不为空 如果姓名的内容不相等 返回false
			} else if (!name.equals(other.name))
				return false;
            //如果工资不相等 返回false
			if (Double.doubleToLongBits(salary) != Double.doubleToLongBits(other.salary))
				return false;
			return true;
		}
		@Override
		public String toString() {
			return "Worker [name=" + name + ", salary=" + salary + "]";
		}	
	}
		

总结原因:hashCode()和equals方法在Eclipse或Myeclipse上都可以生成 所以练得少 记得少 不重视 应当

百看不如一练 多练!!!!

2.集合存入学生的姓名和成绩 遍历并求出平均成绩

【考察重点】集合的遍历 键遍历/值遍历/entrySet遍历/for-each遍历

(1)【keySet方法】

package day18;
import java.util.*;
import java.util.Map.Entry;

public class Test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//2.map 学生姓名成绩遍历打印 求学生的平均成绩
		Map<String,Double> map=new HashMap<String,Double>();
		map.put("zhangsan", 25.0);
		map.put("lisi", 82.0);
		map.put("wangwu",99.0);
		//1.用keySet方法
		Set keySet=map.keySet();//获取键的集合
		Iterator it=keySet.iterator();//迭代键的集合.
		Double sum = (double) 0;
		while(it.hasNext()){
			String key=(String) it.next();
			Double score=map.get(key); //获取键对应的每个键对应的值
			sum+=score;
		}
		Double average=sum/map.size();
		System.out.println(average);
	}
}

(2)【entrySet方法】

package day18;
import java.util.*;
import java.util.Map.Entry;

public class Test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//2.map 学生姓名成绩遍历打印 求学生的平均成绩
		Map<String,Double> map=new HashMap<String,Double>();
		map.put("zhangsan", 25.0);
		map.put("lisi", 82.0);
		map.put("wangwu",99.0);
		//2.用entrySet方法
		Set<Entry<String,Double>> set=map.entrySet();
		Iterator<Entry<String,Double>> it=set.iterator();
		Double sumScore=(double) 0;
		for (Entry<String, Double> entry : set) {
			Double score=entry.getValue();
			sumScore+=score;
		}
		Double average=sumScore/map.size();
		System.out.println(average);
	}
}

(3)【for-each方法】

package day18;
import java.util.*;
import java.util.Map.Entry;

public class Test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Map<String,Double> map=new HashMap<String,Double>();
		map.put("zhangsan", 25.0);
		map.put("lisi", 82.0);
		map.put("wangwu",99.0);
		//3.for-each方法
		Set<String> set=map.keySet();
		Double sumScore=(double) 0;
		for (String string : set) {
			Double score=map.get(string);
			sumScore+=score;
		}
		System.out.println(sumScore/map.size());
		}
	}
}

(4)【values方法】

package day18;
import java.util.*;
import java.util.Map.Entry;

public class Test02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Map<String,Double> map=new HashMap<String,Double>();
		map.put("zhangsan", 25.0);
		map.put("lisi", 82.0);
		map.put("wangwu",99.0);
		//4.values
		Collection sumScore=map.values();
		Double sum=(double) 0;
		for (Object object : sumScore) {
			sum+=(Double)object;
		}
		Double average=sum/map.size();
		System.out.println("平均成绩:"+average);
	}
}

猜你喜欢

转载自blog.csdn.net/erpang7/article/details/81747257