发表于: 2018-01-09 01:55:48
1 635
今天完成
1.Map集合的学习;
a.Map是一种依照键(key)存储元素的容器,键(key)很像下标,在List中下标是整数。在Map中键(key)可以使任意类型的对象。Map中不能有重复的键(Key),每个键 b.(key)都有一个对应的值(value)。
c. 一个键(key)和它对应的值构成map集合中的一个元素。
d.Map中的元素是两个对象,一个对象作为键,一个对象作为值。键不可以重复,但是值可以重复。
e.Map一次存一对元素, Collection 一次存一个。Map 的键不能重复,保证唯一。
f.Map 一次存入一对元素,是以键值对的形式存在.键与值存在映射关系.一定要保证键的唯一性.
下面是照网上例子写的
import java.util.TreeMap;
import java.util.Comparator;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Iterator;
import java.lang.Comparable;
public class demo4 {
public static void main(String[] args) {
TreeMap<Person, String> hm = new TreeMap<Person, String>(new MyComparator());
hm.put(new Person("jack", 20), "1001");
hm.put(new Person("rose", 18), "1002");
hm.put(new Person("lucy", 19), "1003");
hm.put(new Person("hmm", 17), "1004");
hm.put(new Person("ll", 25), "1005");
System.out.println(hm);
System.out.println(hm.put(new Person("rose", 18), "1006"));
Set<Entry<Person, String>> entrySet = hm.entrySet();
Iterator<Entry<Person, String>> it = entrySet.iterator();
while (it.hasNext()) {
Entry<Person, String> next = it.next();
Person key = next.getKey();
String value = next.getValue();
System.out.println(key + " = " + value);
}
}
}
class MyComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
if (p1.getAge() > p2.getAge()) {
return -1;
} else if (p1.getAge() < p2.getAge()) {
return 1;
}
return p1.getName().compareTo(p2.getName());
}
}
class Person implements Comparable<Person> {
private String name;
private int age;
Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public int hashCode() {
return this.name.hashCode() + age * 37;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Person) {
Person p = (Person) obj;
return this.name.equals(p.name) && this.age == p.age;
} else {
return false;
}
}
@Override
public String toString() {
return "Person@name:" + this.name + " age:" + this.age;
}
@Override
public int compareTo(Person p) {
if (this.age > p.age) {
return 1;
} else if (this.age < p.age) {
return -1;
}
return this.name.compareTo(p.name);
}
}
2.弥补之前遗漏的知识点
Set集合TreeSet
TreeSet支持 两种排序方式:自然排序和客户化排序,默认情况下是自然排序;
自然排序:也就是元素需要实现Comparable接口,覆盖compareTo 方法。
客户化排序:当元素自身不具备比较性,或者元素自身具备的比较性不是所需的。那么这时只能让容器自身具备。(定义一个类实现Comparator 接 口,覆盖compare方法。并将该接口的子类对象作为参数传递给TreeSet集合的构造函数。当Comparable比较方式,及Comparator比较方式同时存在,以 Comparator比较方式为主。
Set集合HashSet
知识点:哈希值、hashcode方法
明天计划
1.更深入学习Map集合;
2.学习spring;
遇到问题
前期学习遗漏过多概念性名词和知识点(如;哈希等),导致现在看不懂后面的知识点,需要在网上查询资料并理解;
收获
学习到了Map集合的相关知识,补充了之前学习的Set集合的内容;
评论