Exercise03
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Exercise03 {
public static void main(String[] args) {
/*
1.使用HashMap类实例化一个Map类型的对象m,键(String)和值(int)分别用于存储员工的姓名和工资,存入数据如下:
Jack - 650 ; Tom - 1200 ; Rose - 2900;
2.将Jack的工资更改为2600;
3.为所有员工加工资100;
4.遍历集合中所有的员工;
5.遍历集合中所有的工资。
*/
Map m = new HashMap();
//存入数据:Jack - 650 ; Tom - 1200 ; Rose - 2900;
m.put("Jack",650);
m.put("Tom",1200);
m.put("Rose",2900);
System.out.println(m);
//2.将Jack的工资更改为2600;
m.put("Jack",2600);
System.out.println(m);
//3.为所有员工加工资100;
Set set = m.keySet();
for (Object o : set) {
m.put(o,(Integer)m.get(o)+100);
}
System.out.println(m);
//4.遍历集合中所有的员工;
Set set1 = m.entrySet();
for (Object o : set1) {
Map.Entry entry = (Map.Entry)o;
System.out.println(entry.getKey() + " - " + entry.getValue());
}
//5.遍历集合中所有的工资。
Collection values = m.values();
for (Object o : values) {
System.out.println(o);
}
}
}
/*
运行结果:
{Tom=1200, Rose=2900, Jack=650}
{Tom=1200, Rose=2900, Jack=2600}
{Tom=1300, Rose=3000, Jack=2700}
Tom - 1300
Rose - 3000
Jack - 2700
1300
3000
2700
*/
Exercise04
分析HashSet和TreeSet愤怒别如何实现去重的:
(1)HashSet的去重机制:hashCode() + equals(),底层先通过存入对象,进行运算得到一个hash值,通过hash值得到对应的索引,如果发现table索引所在的位置,没有数据,就直接加入,如果有数据,就进行equals比较[遍历比较],如果比较后,不相同,就加入,否则就不加入
(2)TreeSet的去重机制:如果你传入了一个Comparator匿名对象,就使用实现的compare去重,如果方法返回0,就认为是相同的元素/数据,就不添加,如果你没有传入一个Comparator匿名对象,则以你添加的对象实现的Compareable接口的compareTo去重。