IT十八掌作业_java基础第十一天_集合

1.定义罪犯Criminal类,height(身高)/weight(体重)/blood(血型)/home(籍贯)属性。

重写hashcode和equals,使用四个属性的组合进行实现。

创建HashSet集合,里面存放20个Criminal对象,其中O型血2人,A型血3人,B型血4人,AB型血1人,其余血型不详。

注意:hashcode()方法实现时,要求身高、体重、和血型三个属性合成一个数字,实现两两比较的高效算法。

2.Map:

---------------------------------------------------------------------------------------

key(键) - value(值) :kv对.

创建HashMap,Person为key,Dog为value。

存放100元素,遍历map集合,两种方式。EntrySet + KeySet.

删除操作。remove();

----------------------------------------------------------------------------------------,

1,class Criminal{
    int height;
    int weight;
    String blood;
    String home;
    Criminal(int height,int weight,String blood){
        this.height=height;
        this.weight=weight;
        this.blood=blood;
    }
    
    @Override
    public int hashCode() {
        final int prime=31;
        int result=1;
        result=result*prime+(blood==null?0:blood.hashCode());
        result=result*prime+height;
        result=result*prime+weight;
        return result;
    }

@Override
    public boolean equals(Object obj) {
        if(this==obj){
            return true;
        }
        if(obj==null){
            return false;
        }
        if(obj.getClass()==Criminal.class){
            Criminal temp=(Criminal)obj;
            if(temp.height!=this.height){
                return false;
            }
            if(temp.weight!=this.weight){
                return false;
            }
            if(temp.blood==null&&this.blood==null){
                return true;
            }
            if(this.blood.equals(temp.blood)){
                return true;
            }
        }
        return false;
    }
    
}

public class container {

public static void main(String[] args) {
        Set<Criminal> set=new HashSet<Criminal>();
        set.add(new Criminal(188,56,"o"));
        set.add(new Criminal(188,56,"o"));
        set.add(new Criminal(188,56,"A"));
        set.add(new Criminal(188,56,"A"));
        set.add(new Criminal(188,56,"A"));
        set.add(new Criminal(188,56,"B"));
        set.add(new Criminal(188,56,"B"));
        set.add(new Criminal(188,56,"B"));
        set.add(new Criminal(188,56,"B"));
        set.add(new Criminal(188,56,"AB"));
        set.add(new Criminal(188,56,"unknwon"));
        set.add(new Criminal(188,56,"unknwon"));
        set.add(new Criminal(188,56,"unknwon"));

}

2,class Person{
    String name;
    Person(String name){
        this.name=name;
        
    }
}
class Dog{
    String name;
    Dog(String name){
        this.name=name;
    }
}

Map<Person,Dog> map=new HashMap<Person,Dog>();        
        for(int i=0;i<100;i++){
            map.put(new Person("tom"+i), new Dog("BB"+i));
            
        }
        for(Entry<Person,Dog> entry:map.entrySet()){
            System.out.println(entry.getKey()+""+entry.getValue());
        }
        for(Person p:map.keySet()){
            System.out.println(map.get(p));
        }

时间: 2024-12-25 10:42:13

IT十八掌作业_java基础第十一天_集合的相关文章

IT十八掌作业_java基础第十一天_集合.txt

1.定义罪犯Criminal类,height(身高)/weight(体重)/blood(血型)/home(籍贯)属性. 重写hashcode和equals,使用四个属性的组合进行实现. 创建HashSet集合,里面存放20个Criminal对象,其中O型血2人,A型血3人,B型血4人,AB型血1人,其余血型不详. 注意:hashcode()方法实现时,要求身高.体重.和血型三个属性合成一个数字,实现两两比较的高效算法. package com.it18zhang.hash.demo; impor

IT十八掌作业_java基础第23天_数据库连接池\反射

感谢大家对IT十八掌大数据的支持,今天的作业如下: 1.属性赋值 ------------- 1.Man{50+ } Man man = new Man(); man.setXxx1(...); man.setXxx2(...); ... 50 Man copy = new Man(); copy = man ; copy.setXxx1(man.getXxx1()); copy.setXxx1(man.getXxx1()); copy.setXxx1(man.getXxx1()); copy.

IT十八掌作业_java基础第三天_数组

/* 1.定义一个函数,函数功能是动态提取int[]中元素的最大值. 2.定义一个函数,从数组中查询指定的元素首次出现的位置. 3.定义函数,完成冒泡排序,大数下沉. 4.折半查找. 5.阐述 6.定义一个函数,实现矩阵的转置.arr[i][j] == arr[j][i];//前提条件是正方的. 7.遍历三维组数,横向输出三维数组的每一个层. 8.定义一个类:Dog 有名称 color age cry(); 9.阐述出来堆区,栈区,何时出现溢出,如何解决. 10.oop ------------

IT十八掌作业_java基础第七天_匿名内部类、异常、包和jar

利用白富美接口案例,土豪征婚使用匿名内部类对象实现. 2.定义三角形类Trianle,里面包含三个int类型属性,分别表示三条边的长度, 构造三角形对象时,任意两边之和是否大于第三边,如若不成立,抛出自定义异常. 3.Person类中增加birthday属性,对setBirthday(int ,int , int )方法进行异常处理, 要求年有效.月有效.日有效.年月日指定的具体日期有效,对不同情况分别抛出不同的异常. 4.将类定义到指定的包下.com.it18zhang,编译之后,打成jar文

IT十八掌作业_java基础第五天_静态代码块、类的继承和接口

1.文字阐述静态代码块的作用. A:静态代码块常用来执行类属性的初始化,且只被执行一次. 2.构造代码块与构造函数的调用顺序如何?和方法的声明位置是否有关?为什么?构造代码块的作用是什么? 执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 和位置无关. 构造代码块在每次创建对象是都会执行. 3.类加载时,是否一定会执行静态代码块?如何手动控制类加载? 类加载时默认加载静态代码块,class.forName(String name) 或 class.forNa

IT十八掌作业_java基础第四天_复习运算符、进制转化和数组

1.将按位运算操作,尤其是左移和右移(有无符号)整理到自己的博客中. 重点说明清晰负数的运算过程. 2.byte数到十六进制字符串表现形式程序设计原理和实现方式整理到博客中. 3.定义函数,计算一位整型数组所有元素的和. 4.数组的拷贝. 5.堆内存默认是1/4, ---------------------------------------- java -Xmx//设置堆内存最大值 -Xms//设置堆内存初始值 className//类名 ---------------------- 1,答:

IT十八掌作业_java基础第26天_Java基础总结/虚拟机基础

感谢大家对IT十八掌大数据的支持,今天的作业如下: 巩固java基础知识,安装虚拟机! --------------------------------------------------------------------------------------------------------答案略,自行练习

IT十八掌作业_java基础第八天_多线程

感觉大家对IT十八掌大数据的支持,今天的作业如下 1. 5辆汽车过山洞,依次经过山洞.每辆车通过山洞花费10秒,使用多线程实现. 2. 用多线程模拟蜜蜂和熊的关系. 蜜蜂是生产者,熊是消费者.蜜蜂生产蜂蜜是累加的过程,熊吃蜂蜜是批量(满100吃掉)的过程. 生产者和消费者之间使用通知方式告知对方.注意不能出现死锁的现象.

IT十八掌作业_java基础第25天_NIO

感谢大家对IT十八掌大数据的支持,今天的作业如下: 1.将NIO中的Socket通信过程使用图形进行描述和说明. 2.画图说明Runtime data area的内部结构. 3.阐述class的类加载过程. 4.反射和内省的异同,以及各自的优缺点. 5.阐述jvm中从堆和非堆的角度阐述jvm的内存结构.