人生苦短我学Java-12-异常处理/集合/ArrayList与LinkedList
一、Exception异常
相对是一个小问题 一般是代码逻辑问题会产生该异常。亦可捕获异常进行处理,常处理分为两种
- 非RuntimeException(编译时期异常)
- RuntimeException(运行时期异常)
package com.ppl.exTry; /* com.ppl.com.ppl.exTry:学习项目 @user:广深-小龙 @date:2022/1/16 12:34 */ import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class TryCatch { public static void main(String[] args) throws MyException { // 万能抛异常 try { String strTime = "2022-01-15 22:30:36"; DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime localDateTime = LocalDateTime.parse(strTime, pattern); System.out.println(localDateTime.format(pattern)); System.out.println(5 / 0); } catch (Exception e) { System.err.println("格式错误 strTime error:" + e.getClass() + e.getMessage()); } // 主动抛异常 try { SimpleDateFormat f = new SimpleDateFormat(""); f.parse(""); } catch (Exception e) { throw new RuntimeException("主动抛出异常:error RuntimeException"); } // 自定义异常 ExTest.exTest(5); } } class MyException extends Exception { public MyException() { } public MyException(String err) { super(err); } } class ExTest { // 自定义异常 public static void exTest(int num) throws MyException { if (num > 10) { System.out.println(num); } else { throw new MyException("自定义异常---错误!!!"); } } }
自定义异常类,继承Exception或者RuntimeException,写多个构造方法
二、Collection集合
1、什么是集合? 集合就是个容器,用来装东西。比如数组容器、集合容器。
2、集合容器的特点?
- 1.集合容器的长度是可以变化的
- 2.集合容器只能存储引用数据类型
- 3.一个集合容器中可以存储不同引用数据类型的数据
3、集合容器和数组容器的区别?
- 1.集合容器的长度是可以变化的,数组容器一旦初始化长度就不能改变了
- 2.集合容器只能存储引用数据类型,数组容器既可以存储基本数据类型,也可以存储引用数据类型
- 3.一个集合容器中可以存储不同引用数据类型的数据,一个数组容器中只能存储同一种数据类型的数据
package com.ppl.object; /* com.ppl.object:学习项目 @user:广深-小龙 @date:2022/1/16 19:54 */ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.function.Predicate; public class Obj_Collection { public static void main(String[] args) { new MyCollection().ToArr(); } } class MyCollection { public MyCollection() { // 创建集合容器 Collection c = new ArrayList(); // 添加元素 c.add("字符串"); c.add(123); c.add(true); System.out.println("c:" + c); // 添加集合 Collection c1 = new ArrayList(); c1.addAll(c); System.out.println("c1:" + c1); // 删除元素 c1.remove(true); System.out.println("c1删除元素:" + c1); // 按照条件删除元素 c1.removeIf( new Predicate() { @Override public boolean test(Object o) { // 判断o(也就是每个元素)是否是Integer类型,true就删除该元素 return o instanceof Integer; } }); System.out.println("c1 removeIf:" + c1); // 清空集合 c1.clear(); System.out.println("c1 清空集合:" + c1); // 集合容器长度 System.out.println(c.size()); // 判断集合中是否包含指定元素,返回布尔值 System.out.println("判断集合中是否包含指定元素:" + c.contains(true)); // 判断集合是否为空,返回布尔值 System.out.println(c1.isEmpty()); } public void ToArr() { // 转为数组,for遍历 System.out.print("for遍历:"); Collection c = new ArrayList(); c.add("a"); c.add(123); c.add(true); Object[] obj = c.toArray(); for (int i = 0; i < obj.length; i++) { System.out.print(obj[i] + " "); } System.out.println(); // 迭代器遍历 System.out.print("迭代器遍历:"); Iterator it = c.iterator(); while (it.hasNext()) { Object o = it.next(); System.out.print(o + " "); } // 增强for循环 System.out.println(); System.out.print("增强for循环:"); for (Object o : c) { System.out.print(o + " "); } } }
三、List
1、List接口
List集合的特点?
- 1.有序的(存入的顺序和取出的顺序是一样的)
- 2.元素可以重复的
- 3.有索引的
2、常见的成员方法?
- 和上面的Collection是一样
- void add(int index, Object element):在指定的索引处添加元素
- Object get(int index):获取指定索引处的元素
- Object remove(int index):删除指定索引处的元素
- Object set(int index, Object element):修改指定索引处的元素,返回被修改的数据
package com.ppl.object; /* com.ppl.object:学习项目 @user:广深-小龙 @date:2022/1/16 17:21 */ import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class Obj_List { public static void main(String[] args) { // 创建集合 List list = new ArrayList(); // 添加元素 list.add("a"); list.add(123); list.add(true); System.out.println(list); // 查询index的值 System.out.println("查询index的值:" + list.get(0)); // 修改元素 list.set(0, "被修改了"); System.out.println("修改元素:" + list); // index删除元素 list.remove(1); System.out.println("index删除元素:" + list); // 遍历方式一:iterator迭代器 Iterator iterator = list.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next() + " "); } System.out.println(); // 遍历方式二:转数组遍历 Object[] obj = list.toArray(); for (int i = 0; i < obj.length; i++) { System.out.print(obj[i] + " "); } System.out.println(); // 遍历方式三:obj for (Object o : list) { System.out.print(o + " "); } System.out.println(); // 遍历方式四:利用list的get进行普通for for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i) + " "); } } }
四、实现类:ArrayList与LinkedList
重点掌握这两个实现类。
1、ArrayList集合的特点?成员方法和List一样
- 1.有序的(存入的顺序和取出的顺序是一样的)
- 2.元素可以重复的
- 3.有索引的
package com.ppl.object; /* com.ppl.object:学习项目 @user:广深-小龙 @date:2022/1/16 21:42 */ import java.util.ArrayList; public class Obj_ArrayList { public static void main(String[] args) { // 创建集合 ArrayList arr = new ArrayList(); // 添加元素 arr.add("a"); arr.add(123); arr.add(false); // 其它方法、遍历和List是差不多的 } }
2、LinkedList实现类
LinkedList集合的特点?
- 1.有序的(存入的顺序和取出的顺序是一样的)
- 2.元素可以重复的
- 3.有索引的
常见的成员方法?
- 和List一样的
- public void addFirst(Object e):将元素添加到第一个位置
- public void addLast(Object e):将元素添加到最后一个位置
- public Object getFirst():获取第一个位置的元素
- public Object getLast():获取最后一个位置的元素
- public Object removeFirst():删除第一个位置的元素
- public Object removeLast():删除最后一个位置的元素
package com.ppl.object; /* com.ppl.object:学习项目 @user:广深-小龙 @date:2022/1/16 21:42 */ import java.util.LinkedList; public class Obj_ArrayList { public static void main(String[] args) { new Obj_ArrayList().linkedList(); } public void linkedList() { // linkedList与ArrayList差不多一致,linkedList有头和尾的元素操作 LinkedList list = new LinkedList(); list.add("asd"); System.out.println("linkedList初始值:" + list); // 添加首位元素 list.addFirst("首位"); // 添加末尾元素 list.addLast("末尾"); System.out.println("首末添加元素后:" + list); // 获取首位元素 System.out.println("获取首位元素:" + list.getFirst()); // 获取末尾元素 System.out.println("获取末尾元素:" + list.getLast()); // 删除首位元素 list.removeFirst(); // 删除末尾元素 list.removeLast(); System.out.println("最后:" + list); } }
欢迎来大家QQ交流群一起学习:482713805,博主微信+:gogsxl