发表于: 2018-01-09 01:55:48

1 636


今天完成

  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集合的内容;




返回列表 返回列表
评论

    分享到