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();
3.HashTable:线程安全的。
---------------
1.put
2.
3.
4.
-----------------------------------------------------------------------------------------------------
keySet方法 : 返回的是键的set集合,通过get(key)方法获取value
entrySet方法 : 返回的是映射关系的set集合,通过getKey(),getValue()方法获取key,value
答:
1.
package com.it18zhang.day11;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class HashSetTest {
public static void main(String[] args) {
Set<Criminal> set =
new
HashSet<Criminal>();
Criminal c1 =
new
Criminal(180,70,2,
"江西"
);
Criminal c2 =
new
Criminal(176,60,1,
"北京"
);
Criminal c3 =
new
Criminal(160,70,0,
"福建"
);
Criminal c4 =
new
Criminal(183,73,3,
"湖南"
);
Criminal c5 =
new
Criminal(183,73,3,
"湖南"
);
set.add(c1);
set.add(c2);
set.add(c3);
set.add(c4);
set.add(c5);
System.out.println(c1.equals(c2));
System.out.println(c5.equals(c4));
for
(Criminal c : set){
out(c);
}
}
public static void out(Criminal c){
Map<Integer,String> map =
new
HashMap<Integer,String>();
map.put(0,
"A"
);
map.put(1,
"B"
);
map.put(2,
"AB"
);
map.put(3,
"O"
);
System.out.println(
"身高"
+c.getHeight()+
"体重"
+c.getWeight()+
"血型"
+map.get(c.getBlood())+
"籍贯"
+c.getHome());
}
}
package com.it18zhang.day11;
public class Criminal {
private int height;
private int weight;
private int blood;
private String home;
public Criminal(){}
public Criminal(int height, int weight, int blood, String home) {
if
(height <= 0){
System.out.println(
"身高不能为负!"
);
System.exit(-1);
}
else
if
(weight <= 0){
System.out.println(
"体重不能为负"
);
}
else
if
(blood > 3 || blood < 0){
System.out.println(
"血型,必须为0-3之间的值"
);
System.exit(-1);
}
else
{
this
.height = height;
this
.weight = weight;
this
.blood = blood;
this
.home = home;
}
}
public int getHeight() {
return
height;
}
public void setHeight(int height) {
this
.height = height;
}
public int getWeight() {
return
weight;
}
public void setWeight(int weight) {
this
.weight = weight;
}
public int getBlood() {
return
blood;
}
public void setBlood(int blood) {
this
.blood = blood;
}
public String getHome() {
return
home;
}
public void setHome(String home) {
this
.home = home;
}
/*
*重写hashcode
*/
public int hashCode()
{
return
height+weight+blood+home.hashCode();
}
/**
* 重写equals方法
*/
public boolean equals(Object obj)
{
if
(obj ==
null
)
return
false
;
if
(obj ==
this
)
return
true
;
//height,weight,blood,home四个条件同时满足才相同。
if
(obj.getClass() == Criminal.class){
Criminal c = (Criminal)obj;
if
(c.height ==
this
.height && c.weight ==
this
.weight && c.blood ==
this
.blood &&
this
.home.equals(c.home))
return
true
;
}
return
false
;
}
}
2.Map
package com.it18zhang.day11;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class HashMapTest {
public static void main(String[] args) {
Map<Person,Dog> map =
new
HashMap<Person,Dog>();
List<Person> keys =
new
ArrayList<Person>();
for
(int i = 0; i < 100; i++){
Person p =
new
Person(
"Person"
+i,i);
map.put(p,
new
Dog(
"dog"
+i,i));
keys.add(p);
}
System.out.println(
"---------------------------------keySet-----------"
);
for
(Person p : map.keySet()){
System.out.println(p.getName()+
"\t"
+map.get(p).getName());
}
System.out.println(
"--------------------------------EntrySet----------"
);
for
(Entry<Person,Dog> entry : map.entrySet()){
System.out.println(entry.getKey().getName()+
"\t"
+entry.getValue().getName());
}
System.out.println(
"------------remove前---------------"
);
for
(Person p : keys){
map.remove(p);
}
System.out.println(
"------------remove后---------------"
);
System.out.println(
"map是否为空"
+map.isEmpty());
}
}
package com.it18zhang.day11;
public class Person {
private String name;
private int age;
public Person() {
super
();
}
public Person(String name, int age) {
super
();
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;
}
public int hashCode(){
return
name ==
null
?age : name.hashCode() + age;
}
public boolean equals(Object obj){
if
(obj ==
null
)
return
false
;
if
(obj ==
this
)
return
true
;
if
(obj.getClass() == Person.class){
Person p = (Person)obj;
//name是否相同
boolean nameEqu =
false
;
if
(
this
.name ==
null
){
if
(p.name ==
null
)
nameEqu =
true
;
else
{
nameEqu =
false
;
}
}
else
{
nameEqu = name.equals(p.name);
}
boolean ageEqu = (
this
.age == p.age);
return
nameEqu && ageEqu;
}
return
false
;
}
}
package com.it18zhang.day11;
public class Dog {
private String name;
private int age;
public Dog() {
}
public Dog(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;
}
}
转载于:https://blog.51cto.com/liubx/1784026
IT十八掌作业_java基础第十一天_集合相关推荐
- IT十八掌作业_java基础第十八天_项目完善
感谢大家对IT十八掌大数据的支持,今天的作业如下: 1.QQ完成 2.使用DatagramSocket实现屏广 Server : //完善代码,区域缩小 2.合包 客户端 : JFrame ,Imag ...
- IT十八掌作业_java基础第十二天_集合
1.描述HashMap内部实现原理. 2.描述Hashset和HashMap的区别. 3.年级的集合使用Map的嵌套实现. 10班,每个班50人. 4.编程实现文本文件的复制.合理设计程序,得到缓冲区 ...
- IT十八掌作业_java基础第六天_接口与适配器模式、多态、内部类
[作业1] ------------------------------------ 使用抽象类和接口实现适配器模式设计.涉及的类和接口分别为ButtonListener(接口), 其中含有click ...
- IT十八掌作业_java基础第二天_进制转换原理和补码存储方式
1:负数的表现形式,为什么如此设计? 答:负数在内存中是以补码的形式存储的,补码时在原码的基础上取反加一 得到的.负数在内存中这样设计是为了互为相反数的两个数相加能够得到0的结 果. 2:-128在内 ...
- IT十八掌作业_java基础第八天_多线程
/** *1. 5辆汽车过山洞,依次经过山洞.每辆车通过山洞花费10秒,使用多线程实现. */ //山洞 class Cave { } //汽车 class Car extends Thread { ...
- IT十八掌作业_java基础第十六天_GUI/socket
参照视频,编写出聊天程序. 知识点分析: Socket + GUI + IO = 简版QQ ------------------------------ 1.GUI 2.Socket Server ...
- java 打印三维数组_Java基础第三天_数组
1.定义一个函数,函数功能是动态提取int[]中元素的最大值. 2.定义一个函数,从数组中查询指定的元素首次出现的位置. 3.定义函数,完成冒泡排序,大数下沉. 4.折半查找. 5.阐述 6.定义一个 ...
- 学大数据找IT十八掌
<IT十八掌大数据内功修炼到企业实战2.0课程>免费自学马拉松计划 1.关于十八掌 学了大数据,还是不敢找工作? 内功不够!跟随十八掌掌门徐培成炼内功! 十八掌教育努力打造一套地表最 ...
- 《IT十八掌大数据内功修炼到企业实战2.0》全套视频2
<IT十八掌大数据内功修炼到企业实战2.0课程>免费自学马拉松计划 1.关于十八掌 学了大数据,还是不敢找工作? 内功不够!跟随十八掌掌门徐培成炼内功! 十八掌教育努力打造一套地表最 ...
最新文章
- 基于ESP32的竞赛裁判系统功能调试-光电条检测板
- 搜索进一步细化 谷歌或重回大陆
- SQLServer数据库的表管理
- 2020年终总结暨组会PPT20201229《复现chen密度径向分布结果》
- python 全解坦克大战 辅助类 附完整代码【雏形】
- 华为海思年内恐超越联发科 成亚洲最大芯片设计公司
- AlgorithmMan,一套免费的算法演示神器(开源动画演示版)
- Java同步机制之Monitor监视器与syncrhoized实现原理
- 服务器端添加网站,服务器添加网站
- 华为机试HJ68:成绩排序
- ask调制流程图_ASK调制及解调实验报告 - 范文中心
- OpenCV_信用卡识别代码_唐宇迪实战项目
- 服务器运维监控知识体系
- 桌面提醒助手谷歌浏览器插件
- 502 bad gateway
- 全国5M分辨率遥感图免费下载!还有遥感卫星视频可下载
- Gimp 将图片中的颜色更改
- 2021-03-23 sgn函数
- 学生成绩管理系统-C语言(附源码)
- MDCC王戈点爆全场:Smule乐器王是怎样炼成的
热门文章
- 自定义控件:旋转菜单
- var let const声明变量的区别
- 鸿蒙适配倒计时,倒计时2天!首批鸿蒙OS适配名单确定,你的手机在列吗?
- 数据结构和算法分析:第一章 引论
- 计算机小键盘顺序,为什么电脑、电话数字键盘排列顺序不同?
- nginx运行php如何,ThinkPHP项目在Nginx上运行的配置问题
- 搜狗输入法怎么切换为繁体_搜狗这次太良心了,必须强推这工具!
- 英语 语义分割_Padlex数据处理-语义分割-分段变换,PaddleX,segtransforms
- 循环链表的插入和删除
- 6502汇编 跳转以及返回