package lesson17;

/**1. 创建自定义类Triangle包含如下属性:

最小夹角 a(整型、单位度)

最大夹角 b(整型、单位度)

编写构造方法包含两个参数(夹角),并根据参数计算最小夹角和最大夹角赋值给a和b

使用HashSet存储Triangle,并且该HashSet不能存储相似三角形

即:HashSet<Triangle> set = new HashSet<Triangle>();

(1)     重写hashCode方法,该方法返回夹角a的值

(2)     重写equals方法,进一步判断另外一个夹角b是否一致,如果一致为相似三角形。

*

* @author LENOVO

*

*/

import java.util.HashSet;

import java.util.Iterator;

public class HashAngle {

HashSet<Triangle> hset=new HashSet<Triangle>();

public void hashTriangle(){

hset.add(new Triangle(30,50));

hset.add(new Triangle(40,80));

hset.add(new Triangle(40,80));

hset.add(new Triangle(80,40));

Iterator iterator=hset.iterator();

while(iterator.hasNext()){

System.out.println("a="+iterator.next()+"b="+iterator.next());

}

}

public static void main(String[] args) {

HashAngle hangle=new HashAngle();

hangle.hashTriangle();

}

}package lesson17;

/**1. 创建自定义类Triangle包含如下属性:

最小夹角 a(整型、单位度)

最大夹角 b(整型、单位度)

编写构造方法包含两个参数(夹角),并根据参数计算最小夹角和最大夹角赋值给a和b

使用HashSet存储Triangle,并且该HashSet不能存储相似三角形

即:HashSet<Triangle> set = new HashSet<Triangle>();

(1)     重写hashCode方法,该方法返回夹角a的值

(2)     重写equals方法,进一步判断另外一个夹角b是否一致,如果一致为相似三角形。

2. 给Triangle增加如下属性:

边长 x

边长 y

边长 z

尝试数学上的其他相似三角形定义来重写hashCode和equals方法,以达到判断三角形是否相似的目的。

*

* @author LENOVO

*

*/

public class Triangle {

int a;

int b;

}

//重写构造方法。。

public Triangle(int a,int b){

if(a>b){

this.a=a-b;

}

else {this.a=b-a;}

this.b=a+b;

}

/* (non-Javadoc)

* @see java.lang.Object#hashCode()

*/

@Override

public int hashCode() {

// TODO Auto-generated method stub

return a;

}

/* (non-Javadoc)

* @see java.lang.Object#equals(java.lang.Object)

*/

@Override

public boolean equals(Object obj) {

if(obj==null){

return false;

}

if(obj==this){

return true;

}

if(obj instanceof Triangle){

Triangle anobj=(Triangle) obj;

if(anobj.b==this.b){

return true;

}

}

return false;

}

/* (non-Javadoc)

* @see java.lang.Object#toString()

*/

@Override

public String toString() {

return "Triangle [a=" + a + ", b=" + b + "]";

}

/**

* @return the a

*/

public int getA() {

return a;

}

/**

* @param a the a to set

*/

public void setA(int a) {

this.a = a;

}

/**

* @return the b

*/

public int getB() {

return b;

}

/**

* @param b the b to set

*/

public void setB(int b) {

this.b = b;

}

}

2package lesson17;

/**1. 创建自定义类Triangle包含如下属性:

最小夹角 a(整型、单位度)

最大夹角 b(整型、单位度)

编写构造方法包含两个参数(夹角),并根据参数计算最小夹角和最大夹角赋值给a和b

使用HashSet存储Triangle,并且该HashSet不能存储相似三角形

即:HashSet<Triangle> set = new HashSet<Triangle>();

(1)     重写hashCode方法,该方法返回夹角a的值

(2)     重写equals方法,进一步判断另外一个夹角b是否一致,如果一致为相似三角形。

2. 给Triangle增加如下属性:

边长 x

边长 y

边长 z

尝试数学上的其他相似三角形定义来重写hashCode和equals方法,以达到判断三角形是否相似的目的。

*

* @author LENOVO

*

*/

public class Triangle {

double a;

double b;

double c;

double x;

double y;

double z;

public Triangle(double x, double y, double z) {

super();

this.a = x/y;

this.b = y/z;

this.c = z/x;

}

/*//重写构造方法。。

public Triangle(int a,int b){

if(a>b){

this.a=a-b;

}

else {this.a=b-a;}

this.b=a+b;

}*/

/* (non-Javadoc)

* @see java.lang.Object#hashCode()

*/

@Override

public int hashCode() {

// TODO Auto-generated method stub

return (int) a;

}

/* (non-Javadoc)

* @see java.lang.Object#equals(java.lang.Object)

*/

@Override

public boolean equals(Object obj) {

if(obj==null){

return false;

}

if(obj==this){

return true;

}

if(obj instanceof Triangle){

Triangle anobj=(Triangle) obj;

if(anobj.b==this.b&&anobj.c==this.c){

return true;

}

}

return false;

}

/* (non-Javadoc)

* @see java.lang.Object#toString()

*/

@Override

public String toString() {

return "Triangle [x=" + x + ", y=" + y + ", z=" + z + "]";

}

/**

* @return the a

*/

public double getA() {

return a;

}

/**

* @param a the a to set

*/

public void setA(int a) {

this.a = a;

}

/**

* @return the b

*/

public double getB() {

return b;

}

/**

* @param b the b to set

*/

public void setB(int b) {

this.b = b;

}

/**

* @return the x

*/

public double getX() {

return x;

}

/**

* @param x the x to set

*/

public void setX(double x) {

this.x = x;

}

/**

* @return the y

*/

public double getY() {

return y;

}

/**

* @param y the y to set

*/

public void setY(double y) {

this.y = y;

}

/**

* @return the z

*/

public double getZ() {

return z;

}

/**

* @param z the z to set

*/

public void setZ(double z) {

this.z = z;

}

/**

* @return the c

*/

public double getC() {

return c;

}

/**

* @param c the c to set

*/

public void setC(double c) {

this.c = c;

}

}

package lesson17;

/**1. 创建自定义类Triangle包含如下属性:

最小夹角 a(整型、单位度)

最大夹角 b(整型、单位度)

编写构造方法包含两个参数(夹角),并根据参数计算最小夹角和最大夹角赋值给a和b

使用HashSet存储Triangle,并且该HashSet不能存储相似三角形

即:HashSet<Triangle> set = new HashSet<Triangle>();

(1)     重写hashCode方法,该方法返回夹角a的值

(2)     重写equals方法,进一步判断另外一个夹角b是否一致,如果一致为相似三角形。

*

* @author LENOVO

*

*/

import java.util.HashSet;

import java.util.Iterator;

public class HashAngle {

HashSet<Triangle> hset=new HashSet<Triangle>();

public void hashTriangle(){

hset.add(new Triangle(3,5,6));

hset.add(new Triangle(4,8,6));

hset.add(new Triangle(4,8,6));

hset.add(new Triangle(8,4,6));

Iterator iterator=hset.iterator();

while(iterator.hasNext()){

System.out.println(iterator.next()+" ");

}

}

public static void main(String[] args) {

HashAngle hangle=new HashAngle();

hangle.hashTriangle();

}

}package lesson17;

/**

* 1. 创建自定义类水果,要求包含水果名称、单价、产地等属性

使用HashSet存储水果,并提供equals方法和hashCode方法使用水果的名称属性判定水果是否相同,使用迭代器输出

* @author LENOVO

*

*/

public class Fruit {

String name;

double price;

String home;

public Fruit(String name, double price, String home) {

super();

this.name = name;

this.price = price;

this.home = home;

}

/**

* @return the name

*/

public String getName() {

return name;

}

/**

* @param name the name to set

*/

public void setName(String name) {

this.name = name;

}

/**

* @return the price

*/

public double getPrice() {

return price;

}

/**

* @param price the price to set

*/

public void setPrice(double price) {

this.price = price;

}

/**

* @return the home

*/

public String getHome() {

return home;

}

/**

* @param home the home to set

*/

public void setHome(String home) {

this.home = home;

}

/* (non-Javadoc)

* @see java.lang.Object#toString()

*/

@Override

public String toString() {

return "Fruit [name=" + name + ", price=" + price + ", home=" + home + "]";

}

/* (non-Javadoc)

* @see java.lang.Object#hashCode()

*/

@Override

public int hashCode() {

// TODO Auto-generated method stub

return name.hashCode();

}

/* (non-Javadoc)

* @see java.lang.Object#equals(java.lang.Object)

*/

@Override

public boolean equals(Object obj) {

if(obj==null){

return false;

}

if(obj==this){

return true;

}

if(obj instanceof Fruit){

Fruit anobj=(Fruit) obj;

if(anobj.name.equals(this.getName())){

return true;

}

}

return super.equals(obj);

}

}

package lesson17;

import java.util.HashSet;

import java.util.Iterator;

public class Main {

HashSet<Fruit> hSet=new HashSet<Fruit>();

public void main(){

hSet.add(new Fruit("苹果",2.5,"河南"));

hSet.add(new Fruit("苹果",3,"河南"));

hSet.add(new Fruit("橘子",5,"淮北"));

hSet.add(new Fruit("梨",6,"沈阳"));

Iterator iterator=hSet.iterator();

while(iterator.hasNext()){

System.out.println(iterator.next());

}

}

public static void main(String[]args){

Main m=new Main();

m.main();

}

}

2. 简要说明Set和List在使用上有什么区别?

1>Set不保存重复的元素,List可以保存重复的元素。

2>Set输出时不按输入时的顺序输出,List按照输入时的顺序输出;。

3. 看课件学习TreeSet,向TreeSet中存储自定义类,会出现什么问题,如何解决?

当我们使用TreeSet存储自定义类时,需要在自定义类中重写compareTo方法,以提供比对形式,否则在TreeSet不能对用户自定义的类型进行正确的树状排序。

4. 简要说明TreeSet和HashSet的区别?

TreeSet是一个有序集合,其元素按照升序排列,默认是按照自然顺序排列,而HashSet 的顺序是按调用HashCode()方法,通过一定的比较来排列的顺序。

TreeSet虽然是有序的,但是并没有具体的索引,当插入一个新的数据元素的时候,TreeSet中原有的数据元素可能需要重新排序,所以TreeSet插入和删除数据元素的效率较低。

Java lesson17 homework的更多相关文章

  1. Java lesson08 Homework

    1:1. 写一个类Param,声明四个成员变量a.b.c.d,分别赋予四种访问权限. (1)试验在同一个包中的另一个类里能访问哪几个变量? (2)试验在不同包中的另一个类里能访问哪几个变量? (3)试 ...

  2. Java程序设计学习笔记(一)

    时间:2015-6-2 23:04 程序员,程序猿,程序媛,码农 -------------------------------------------------------   --Java的应用 ...

  3. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  4. homework for Java

    public class Dog { private String name; private String color; private int age; public Dog(String nam ...

  5. java中scanner类的用法

    在Eclipse中编写程序时,如果我们的变量是需要手动输入的时候,我们就可以用到scanner类了. Scanner类,这是一个用于扫描输入文本的新的实用程序.由于任何数据都必须通过同一模式的捕获组检 ...

  6. 2016-2017-2 《Java程序设计》预备作业1 总结

    2016-2017-2 <Java程序设计>预备作业1 总结 预备作业01:你期望的师生关系是什么见https://edu.cnblogs.com/campus/besti/2016-20 ...

  7. java 写一个"HelloJavaWorld你好世界"输出到操作系统文件Hello.txt文件中

    package com.beiwo.homework; import java.io.File; import java.io.FileOutputStream; import java.io.IOE ...

  8. Java冒泡随笔

    package homework; import java.util.Scanner; public class ArraySort { /** * @param args */ public sta ...

  9. java经典题目

    /***********Ryear.java begin********************/ import java.util.Scanner;public class Ryear { /** ...

随机推荐

  1. 2018-2019-2 20165330《网络对抗技术》Exp10 Final 基于PowerShell的渗透实践

    目录 实验内容 实验步骤 实验中遇到的问题 实验总结与体会 实验内容 PoweShell简介 PowerShell入门学习 PowerShell渗透工具介绍 相关渗透实践分析 ms15-034之Pow ...

  2. 刘汝佳dicnic模板

    #include<iostream> #include<cstdio> #include<algorithm> #include<vector> #in ...

  3. mockjs从入门到精通视频教程

    Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试.提供了以下模拟功能: (1)根据数据模板生成模拟数据 (2)模拟 Ajax 请求,生成并返回模拟数据 (3 ...

  4. easyUI之函数

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  5. Ubuntu端口常用命令

    # 查看哪些进程打开了指定端口port(对于守护进程必须以root用户执行才能查看到) lsof -i:port # 查看哪些进程打开了指定端口port,最后一列是进程ID(此方法对于守护进程作用不大 ...

  6. springboot-RequestMappingHandlerMapping

    作用:查看应用请求对应的ur和方法l情况 实例: RequestMappingHandlerMapping mapping =applicationContext.getBean("requ ...

  7. 20190526 - CentOS 7 中 安装 MySQL 8 并授权 root 远程访问

    1. CentOS 7 中 安装 MySQL 8 CentOS 7 中内置 MariaDB 建议升级一下用,性能好很多.但如果一定要用 MySQL 8,就得自己装. 坦白的说,Oracle 升级 My ...

  8. 安装tacker

    安全服务链编排系统安装部署文档 本系统基于OpenStack Pike版本安装,在安装tacker之前,请确保以下模块都已正确安装部署:keystone,mistral,barbican,horizo ...

  9. Email功能的设定

    在前期制定发送邮件功能时,都是使用导入import smtplib模块来实现,虽说能实现, 但是对新人.刚接触的来说不太友好,虽然网上五花八门的教程一大推,但还是要自己花不少时间才搞定(笔者就是) 在 ...

  10. Java-Redis Serializable序列化

    在Java中使用redis存储User对象时,进行JUnit测试时,控制台: 2019-06-24 16:56:45.520 INFO 27688 --- [ main] j.LocalContain ...