java知识点杂货铺【七】

本文介绍了自定义异常类的方法及应用场景,并通过实例演示了如何判断一个字符串是否为另一个字符串的子集。此外,还探讨了在HashSet和TreeSet中存储自定义对象时需要注意的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、自定义两个异常类,一个父类一个子类,在子类中抛父类的异常。
二、输入两个String串,每个串之间用逗号分隔,如何查看一个String串是另外一个String的子集?
三、写一个类放HashSet中,不重写equals和hashcode是否会出错?
四、写一个类放HasgTree中,实现compareTo方法。

一、自定义两个异常类,一个父类一个子类,在子类中抛父类的异常。

为什么要自定义异常?
  创建自定义异常是为了表示应用程序的一些错误类型,为代码可能发生的一个或多个问题提供新的含义;可以显示代码多个位置之间的错误的相似处,也可区分代码运行时可能出现的相似问题的一个或多个错误,或给出应用程序中一组错误的特殊含义。
代码:

package com.zhanghaiping.javaHomeWork;

class FuException extends Exception{

    String msg;

    public FuException(){}

    public FuException(String msg){
        this.msg = msg;
    }

    public String getMsg() {
        return msg;
    }

}

class SonException{

    //定义抛出父类异常
    public SonException() throws FuException{

            throw new FuException("抛出父类异常");
    }
}

public class ExceptionDemo1{

    public static void main(String[] args) {
        try {

           new SonException();

        } catch (FuException fuException) {
            System.out.println("异常信息: " + fuException.getMsg());
        }
    }
}

运行结果:

异常信息为: 不能除0的异常

二、输入两个String串,每个串之间用逗号分隔,如何查看一个String串是另外一个String的子集?

主要用到的是string的contains方法。
代码:

package com.zhanghaiping.javaHomeWork;

public class ContainsOfStringDemo {

    public static void main(String[] args) {

        String string1 = "aaa,bbb,ccc,ddd";
        String string2 = "aaa,bbb";
        new ContainsOfStringDemo().containsFunc(string1, string2);
    }

    public void containsFunc(String string1,String string2 ) {

        if (string1.contains(string2)) {
            System.out.println("String2 是 String1的子集");
        }else {
            System.out.println("String2 是 String1的子集");
        }
    }

}

运行结果:

String2 是 String1的子集

三、写一个类放HashSet中,不重写equals和hashcode是否会出错?

直接看代码:

package com.zhanghaiping.javaHomeWork;

import java.util.HashSet;


class Room{
    String roomName;

    public Room(String name) {
        roomName = name;
    }
}

public class HashSetDemo {

    public static void main(String[] args) {
        HashSet<Room> roomSet = new HashSet<Room>();

        roomSet.add(new Room("No.1"));
        roomSet.add(new Room("No.2"));

        if (new Room("No.1").equals(new Room("No.2"))) {
            System.out.println("调用默认equals方法,返回为True");
        }else {
            System.out.println("调用默认equals方法,返回为Flase");
        }
    }

}

运行结果:

调用默认equals方法,返回为Flase

四、写一个类放HasgTree中,实现compareTo方法。

package com.zhanghaiping.javaHomeWork;

import java.util.Set;
import java.util.TreeSet;

/**
 * @ClassName: Computer
 * @Description: TODO(HashTreetDemo)
 * @date 2016年10月30日 上午1:51:27
 * @author 张海平
 * 湖南师范大学407工作室
 */
class Computer implements Comparable{

    private String comType;
    private int comPrize;

    public Computer(String type,int prize) {
        comType = type;
        comPrize = prize;
    }

    /// 重写compareTo方法,这里我们以价格排序
    @Override
    public int compareTo(Object o) {
        Computer computer = (Computer)o;
        if (this.comPrize > computer.comPrize) {
            return 1;
        }
//      if (this.comType == computer.comType) {
//          return 1;
//      }   
        return -1;
//      int num = new Integer(this.comPrize).compareTo(new Integer(computer.comPrize)) ;
//      return num == 0 ? this.comType.compareTo(computer.comType) : num;
    }

    @Override
    public String toString() {
        // TODO Auto-generated method stub
        return comType + "::" + comPrize;
    }

}
public class HashTreeDemo {

    public static void main(String[] args) {
        Set<Computer> comSet = new TreeSet<Computer>();
        comSet.add(new Computer("acer", 5000));
        comSet.add(new Computer("联想", 4000));
        comSet.add(new Computer("惠普", 3000));
        comSet.add(new Computer("戴尔", 2000));

        System.out.println(comSet);
    }

}

运行结果:

[戴尔::2000, 惠普::3000, 联想::4000, acer::5000]

总结

 同过本次的学习,主要知道了如何去自定义一个异常类,为什么要自定义异常类,还有在HashSet中,如果你不重写equals方法的话,那么它就会调用默认的equals方法,默认的equals方法排序就是按数字或字母在ASCII码的字符顺序来做升序的。还有就是在TreeSet中,如果你想按自己的要求来排序的话就必须实现实现comparable接口,然后在实现compareTo方法,在compareTo方法中,定义你所要求的排序规则,在重写toString方法,要不然返回的就是一堆哈希码,看着也没什么太大的意义,只是告诉你,你集合中所存储的东西没有谁是在同一个地址的。

如果有什么错误欢迎各位指出评论,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值