Java基础知识总结:集合与泛型(下)

散列集

一、Set接口

1.Set是一个无序且不能重复存储的集合

2.HashSetSet的重要实现类

二、与List差异

1.Set的遍历只能用foreach()和iterator(),没有get()方法和set()方法

2.Set中重复添加一个对象,只会保留一个

3.list中的contains()方法比较时会调用对象的equals()方法

4.set中的contains()方法会先调用对象的hashcode()方法,成立后再调用equals()方法比较


关于Map:

1.初始化变量

Mapstudents= new HashMap()

//初始化key值为String,存放的数据类型为student的students集合

2.put()增加对象

Student newStu = newStudent(ID,name);

students.put(ID,newStudent);//以ID作为key值

3.查找对象

(1)SetkeySet = students.keySet();

for(StringstuId:keySet){

Student st=students.get(stuId);

}//先用keySet()获取所有的key,再遍历获取每一个对象

(2)Set>entrySet =students.entrySet();//由于每个键值对都以entry类型存放,yongentrySet()方法获取所有键值对

for(Entryentry:entrySet){//遍历获取键值对

entry.getKey();//获取key

entry.getValue();//获取value

}

4.删除

students.remove(ID);//根据key的值删除

5.修改

Student stu =students.get(ID);

Student newStudent=new Student(ID,newname);

students.put(ID,newStudent);

/*Map中没有直接修改的方法,所以采用先找出对象,然后不修改key值,只修改value的方法进行修改*/


****************************重写equals方法**********************************

/**

 *equals的缺省方法时判断的是两者所有属性完全相同

 *重写可以使判断更加准确

 */

@Override
public booleanequals(Object obj){
//如果obj与比较对象的位置相同,说明obj是从集合中取出再与该位置的元素比较,所以肯定相同
if(this==obj)
    return true;
if(obj==null){
    //若字符串为空,则不能进行字符串比较,所以返回false
    return false;
if(!(objinstanceof Course)){

    //若果obj当前类型不是Course,则当前两个对象肯定不相同
    //instanceof 它的作用是判断其左边对象是否为其右边类的实例
    return false;
//若上述均通过,则说明obj为Course对象,且当前对象不为空
 Coursecourse=(Course)obj;
    if(this.name==null){
        if(course.name==null)
            return true;
        else
            return false;
        }
else{
    if(this.name.equals(course.name))
        return true;
    else
        return false;
    }
}

你可能感兴趣的:(Java基础学习)