1.JAVA集合框架
1.集合框架的基本结构:转自
接口及常用类
Set接口:无序 不可重复
List接口:有序 可重复
Map接口:Map<k,v> 关键字不能重复
Arrays的常用方法
填充Arrays.fill()
复制Arrays.copyOf()
比较Arrays.compare(array1,array2)
输出字典序较大的array
2.集合的遍历
迭代器
Iterator类就是迭代器,所有实现了Collecction或者Iterable接口的集合类都可以生成迭代器。
以ArrayList为例,我们可以使用Collection.iterater()
方法生成迭代器
对于生成的Iterator对象,有Iterator.hasNext()
方法用以检测是否还可以继续迭代,Iterator.next()
方法用以获得下一个迭代对象,如果没有下一个迭代对象依然使用next()
方法的话会抛出NoSuchElementException
异常。
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
Iterator<Integer> iterator = list.iterator();
while ( iterator.hasNext() ) {
System.out.println(iterator.next());
}
}
}
增强for循环
就是foreach循环
for (Integer integer : list) {
System.out.println(integer);
}
聚合操作
使用聚合操作可以将数组转换为流来进行操作,使用Collection.stream()
可以生成流,之后就可以对该流进行一系列过滤操作。
stream.filter()
可以传入返回值为boolean的方法用以过滤流中的每一个元素
stream.limit(int n)
可以限制只读取流中的前n个元素
stream.skip(int n)
用以跳过当前流中的前n个元素
stream.collect(Collector c)
可以将流剩下的元素收集起来,其中Collector为Java收集器
public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(123);
list.add(265);
list.add(396);
Stream<Integer> stream = list.stream();
stream = stream.filter(integer -> integer > 200);
var after = stream.collect(Collectors.toList());
System.out.println(after);
}
}
3.异常处理机制
下面是一个异常处理的标准形式
try {
//可能会出异常的语句
} catch ( 异常 e1 ) {
//当我们捕获e1这种异常时需要做的事情
} catch ( 异常 e2 ) {
//当我们捕获e2这种异常时需要做的事情
} finally {
//这里的内容一定会被执行
}
- 只会有一个catch句段被执行
- 当我们捕获到异常的时候会从上向下匹配catch的异常,有时需要捕获的异常有继承的情况,必须将子类异常放在靠上的位置,否则会报错
- finally句段中的内容一定会被执行,即使catch中可能会return,所以可以将资源释放类的操作放在finally中执行
Exception类还有如下常用方法
getMessage()
返回该异常的详细描述字符串。
printStackTrace()
将该异常的跟踪栈信息输出到标准错误输出。
printStackTrace(PrintStream s)
将该异常的跟踪栈信息输出到指定输出流。
getStackTrace()
返回该异常的跟踪栈信息。
4.自定义异常类
自定义异常类只需要继承Exception类,并且实现构造函数
public class MyException extends Exception {
public MyException() {
super("An Exception Caused");
}
}
测试类
try {
throw new MyException();
} catch ( MyException e ) {
System.out.println(e.getMessage());
//输出“An Exception Caused”
}