zoukankan      html  css  js  c++  java
  • Java lesson17 homework

    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插入和删除数据元素的效率较低。

     

  • 相关阅读:
    ACM进阶
    hdu 2018 母牛的故事
    hdu 2084 数塔
    动态规划算法
    hdu 1003 Max sum
    hihocoder 1037 数字三角形
    UDP和TCP的区别(转)
    JS简单的图片左右滚动
    C# MD5加密的方法+一般处理程序使用Session+后台Json序列化
    CSS DIV 独占一行,清除左右两边的浮动
  • 原文地址:https://www.cnblogs.com/lyxcode/p/7325170.html
Copyright © 2011-2022 走看看