在JAVA考证之前复习遇到的典型问题小结

  • HashSet|HashMap比较:底层数据结构为哈希表;

HashMap存储键值对,键唯一,而HashSet仅仅存储对象,对象唯一;

HashMap使用唯一的键来获取对象,速度相对较快。

  • HashSet集合方法:

add(Objiect o)  添加对象

size()    返回元素个数

contains(Objiect o) 判断是否存在

remove(Objiect o) 移除有关对象

  • HashMap集合方法:

        put(key,value)添加键值对

        get(key)         获取与key有关的值

        remove(key) 移除与key有关的映射,并返回旧值

        containsKey( ) containsValue( )判断是否存在key value

                size()返回元素个数

 keySet()获取所有key的集合

 values()获取所有values的集合

泛型集合

  • 泛型即参数化类型,通过指定集合中的元素类型来实现约束

作用:将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性

举例:List list=new ArrayList( );

ArrayList students = new ArrayList();

  •   典型的泛型集合:ArrayList<E>、HashMap<K,V>

泛型类: public class User{}

泛型接口:public interface Pair{}

泛型方法: public  void getMiddle(T[] b) {}  注意的位置

在泛型中,基本类型是不可以做泛型参数,只能使用包装类、引用数据类型。

 

对异常处理不当

  说明:所谓异常,就是在程序执行中发生的异常状态。作为一种语言的机制,Java提供了异常处理,程序员可以比较容易地对异常进行表述。

  但是,就算是Java提供了这种优异的机制,如果不能正确地运用就没有任何意义。经常发生的错误有如下几种情况。

  • 异常交给上一层类了,但是异常的详细内容却被隐藏了。IOException,SQLException等异常只被上一层的Error,Throwable,Exception接收,但是错误的详细内容却被隐藏了。

  • Catch中是空的(未作任何处理)。

  为了不要发生这样的对异常的不当处理,需要使catch到的异常都能交给与该异常相应的类去处理。超类是不能处理catch块中的异常种类的。另外,不允许用空的catch块来处理异常。必须编写适当的异常处理,以便了解异常是如何发生的。

例:读入文件时的异常处理

try { 
  reader = new BufferedReader( new FileReader(file)); 
  reader.read(); 
  } catch (Throwable t) { // ERROR: 错误的详细信息被隐藏了 
  // 讲述错误处理 
  } finally{ 
  try{ 
  reader.close(); 
  } catch(IOException ioe) { //ERROR: catch块中什么也没写 
  } 
  }

修正:

try { 
  reader = new BufferedReader( new FileReader(file)); 
  reader.read(); 
  } catch (FileNotFoundExceptionfnfe) { // OK: catch了想定的异常 
  // 记述错误处理 
  } catch (IOException ioe1) { // OK: catch了想定的异常 
  // 记述错误处理 
  } finally{ 
  try{ 
  reader.close(); 
  } catch(IOException ioe) { 
  // 记述错误处理 // OK:写了异常处理 
  } 
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值