Java核心技术
1.Collection和Arrays工具类常见方法总结
Collection
- 排序
- 查找,替换
- 同步控制(线程安全的集合类型考虑JUC包下的并发集合)
排序
void reverse(List list)//反转
void shuffle(List list)//随机排序
void sort(List list)//按自然排序的升序排序
void sort(List list, Comparator c)
//定制排序,由Comparator控制排序逻辑
void swap(List list, int i , int j)
//交换两个索引位置的元素
void rotate(List list, int distance)
//旋转。当distance为正数时,将list后distance个元素整体移到前面。
//当distance为负数时,将 list的前distance个元素整体移到后面。
举例:
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(-1);
arrayList.add(3);
Collections.reverse(arrayList);
//..............
// 定制排序的用法
Collections.sort(arrayList, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
查找,替换
int binarySearch(List list, Object key)
//对List进行二分查找,返回索引,注意List必须是有序的
int max(Collection coll)
//根据元素的自然顺序,返回最大的元素。类比int min(Collection coll)
int max(Collection coll, Comparator c)
//根据定制排序,返回最大元素,排序规则由Comparatator类控制。
//类比int min(Collection coll, Comparator c)
void fill(List list, Object obj)
//用指定的元素代替指定list中的所有元素
int frequency(Collection c, Object o)//统计元素出现次数
int indexOfSubList(List list, List target)
//统计target在list中第一次出现的索引,找不到则返回-1
//类比int lastIndexOfSubList(List source, list target).
boolean replaceAll(List list, Object oldVal, Object newVal)
//用新元素替换旧元素
同步控制
Collections提供了多个synchronizedXxx()方法,该方法可以将指定集合包装成线程同步的集合,进而解决多线程并发访问集合时的线程安全问题。
注:
HashSet,TreeSet,ArrayList,LinkedList,HashMap,TreeMap都是线程不安全的。
Collections提供了多个静态方法可以把他们包装成线程同步的集合。
Arrays类的常见操作
- 排序sort()
- 查找binarySearch()
- 比较equals()
- 填充fill()
- 转列表asList()
- 转字符串toString()
- 复制copyOf()
2.异常层次
在Java中,所有异常有一个共同的祖先java.lang包中的Throwable类
该类中有两个重要的子类:Exception和Error,他们分别是异常和错误,都各自包含了大量子类。
1.Error
是程序无法处理的错误,表示运行应用程序中比较严重的问题。大多数错误与代码运行时JVM有关。
错误表示故障发生于虚拟机本身,或者发生在虚拟机试图执行应用时,例如:Java虚拟机运行错误,类定义错误等。这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状况。
对于设计合理的应用程序来说,即使确实发生了错误,本质上也不应该试图去处理它所引起的异常状况。在Javah中,错误通过Error的子类进行描述。
2.Exception
是程序本身可以处理的异常。该类有一个重要的子类是RuntimeException,这个子类异常由Java虚拟机抛出。
还有几种常见的异常:
- NullPointerException
要访问的变量没有引用任何对象 - ArithmeticException
算数运算异常,一个整数除以0时抛出 - ArrayIndexOutOfBoundsException
下标越界异常
3.Throwable类常用方法
- public string getMessage()
返回异常发生时的简要描述 - public string toString()
返回异常发生时的详细信息 - public string getLocalizedMessage()
返回异常对象的本地化信息。使用Throwable的子类覆盖的这个方法,可以生成本地化信息。如果子类没有覆盖该方法,则该方法返回的信息与getMessage()返回结果相同 - public void printStackTrace()
在控制台打印Throwable对象封装的异常信息
4.try,catch,finally
- try块:捕获异常
其后可以接0或多个catch块,如果没有catch块,则必须跟一个finally块 - catch块:处理try捕获到的异常
- finally块:无论是否捕获或者处理异常,finally块内的语句都会被执行
当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。
以下4种特殊情况,finally块不会被执行: - 在finally语句块第一行发生了异常。如果在其他行,finally块还是会得到执行
- 在前面的代码种用了System.exit(int)已退出程序。exit是带参函数;若该语句在异常语句之后,finally会执行
- 程序所在的线程死亡
- 关闭CPU
注:
当try语句和finally语句中都有return语句时,在方法返回之前,finally语句的内容将被执行,并且finally语句的返回值将会覆盖原始的返回值。
5.使用try-with-resources代替try-catch-finally
面对必须要关闭的资源,我们总是优先使用try-with-resources而不是try-catch-finally。随之产生的代码更清晰,产生的异常对我们更有用。
使用try-with-resources更容易编写必须关闭的资源的代码,若采用try-catch-finally无法做到这一点。
Java中类似于InputStream,OutputStream,Scanner,PrintWriter等资源都需要调用close()方法来手动关闭,一般情况下通过try-catch-finally语句来实现这个需求。
本文总结了Java中Collection和Arrays工具类的常用方法,包括排序、查找、替换等功能,并介绍了如何利用这些方法处理集合数据。此外,还概述了Java异常处理机制,包括异常层次结构、异常处理流程及资源管理。
1365

被折叠的 条评论
为什么被折叠?



