java学习set/get接口-异常

29 篇文章 0 订阅
26 篇文章 0 订阅

Set接口与实现类

特点:无序无下标,元素不可重复。

全部继承自collection中的方法

使用forrach循环遍历:

For(数据类型 局部变量 :集合名){

// 循环内部的局部变量,代表当次循环从集合中取出的对象

}

HashSet:基于HashCode实现元素不重复。当存入元素的哈希码相同时,会调用== 或 equals进行确认,结果为true,拒绝后者存入。

LinkedHashSet:链表实现的HashSet,按照链表进行存储,即可保留元素的插入顺序。

TreeSet:基于排列顺序实现元素不重复。实现了SortedSet接口,对集合元素自动排序。元素对象的类型必须实现Comparable接口,指定排序规则,通过CompareTo方法确定是否为重复元素。

 

Map接口与实现类

 

Map接口的特点:用于存储任意键值对(key-value),键:无下标、不可重复(唯一),值:无下标,可以重复。

方法:

Put(K Key,V value) // 将对象存入到集合中,关联键值。Key重复则覆盖原值。

Get(object key)//根据键值获取对应的值

set<K>  KeySet()// 返回所有key

Collection<v> values() // 返回包含所有值的collection集合

Set<map.entry<K,V> //键值匹配的set集合

实现类:HashMap,线程不安全,运行效率快;允许用null作为key或是value

Hashtable:线程安全运行效率慢,不允许null作为key或value

Properties:hashtable的子类,要求key和value都是string。通常用于配置文件的读取

TreeMap:实现了sortedMap接口(map的子接口),可以对key自动排序,key需要实现comparable接口。

注意treemap一定要用排序器,如果treemap的构造方法中没有传递排序器对象,默认用的时自然排序器。

Key的唯一性:通过排序器的排序方法返回0,表示key相同key存在value覆盖。

Key的可排序性:通过排序的排序方法放回正数排在右子节点(后面),返回负数排在左子节点(前面)。

   //获得set集合迭代器对象

     Iterator<Entry<Integer, String>> it1=hset1.iterator();

     //循环判断迭代器后面是否有元素可迭代

     while (it1.hasNext()) {

        Entry<Integer, String> e1=it1.next();

         System.out.println(e1.getKey()+","+e1.getValue());

   }

//删除集合中元素

     hmap1.remove(11);

 

     //map集合中所有Key存在set集合中

     Set<Integer> set2=hmap1.keySet();

     //遍历所有Key

     for (Integer k : set2) {

        //通过K得到value

        System.out.println(k+","+hmap1.get(k));

     }

异常

错误Error:不可处理,系统错误,不可恢复的错误。

异常:可以处理

常见的异常:

编译时异常:直接在编码界面报错的异常就是编译异常

运行时异常:java.lang.nullpointerexception(空指针异常)、java.lang.classnoftoundexception(指定的类不存在)、java.lang.aeithmeticexception(数学运算异常)、java.lang.arrayindexoutofboundsexception(数组下标越界)、java.lang.ArrayStoreEception(数据存储异常)、NumberFormatException(数据格式错误)

异常处理方式

Try- catch-finally:“抛”程序正常执行时产生异常,就会在异常代码处生成一个对应的异常类的对象,并将此对象抛出,一旦抛出对象以后,其余的地代码就不再执行。

Try-catch-catch-finally中写多个catch的目的就是把try块里面的代码可能出现的异常分类处理·实现精准处理异常类型。

Throws + 异常类型

快捷键:alt + shift +z

 

Finally的出现就是为了弥补try在报错的时候会直接跳出代码块(try自己)的这个缺陷

Finall在实际的开发场景中,主要是为了释放资源的

自定义异常:需要继承Exception或其子类,代表特定的问题

异常类一定要新建一个exception包,类名后面也要加一个Exception

语法:public class 自定义异常类名 extends jdk中任意一个异常类{

Public 自定义异常类名(String mess){ Super(mess);}}

例:

public class MyException extends Exception {
   
public MyException(String mess) {
       
super(mess);
   
}

   
public static void main(String[] args) throws MyException {
        show()
;
   
}

   
private static void show() throws MyException {
        Scanner scanner =
new Scanner(System.in);
       
System.out.println("请输入取整数");
        int
num = scanner.nextInt();
        if
(num > 8 && num < 15) {
            System.
out.println("当前数:" + num);
       
} else {
           
throw new MyException("输入有误");
       
}
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值