Java学习笔记day15

Collections

作用

对集合操作的工具类

常用的方法

static void sort(List<T> list): 排序
	按照存储的数据的hasnCode值进行排序
static void sort(LIst<T> list, Comparator<? super T> c): 排序
	按照指定的比较器进行排序
	
static void reverse(List<?> list): 反转

static void shuffle(List<?> list): 打乱

static boolean addAll(Collection c, T... elements)
	作用: 给集合中添加多个元素
	参数: 
		c: 集合
		elements: 添加的元素
		
static void copy(List 新集合, List 旧集合): 拷贝
	注意: 新集合中的元素个数要大于等于旧集合
	
int binarySearch(List 查找的集合, T 目标数据): 查找
	返回值: 目标数据在集合中的位置,如果不存在返回-1
	注意: 该方法使用二分查找法,所以在使用该方法时集合必须是有序的
	二分查找法使用的要求: 数组必须是有序的

Map

简介

中文名: 字典
作用: 存储一组数据类型相同的数据
特点: 
	按照键值对的方式存储
名词: 
	键(Key): 类似于标记,如人的名字
	值(Value): 如人本身
	键值对: 一个键与一个值成为一个键值对

要求

键: 不允许重复
值: 可以重复

Map体系结构

Map
	HashMap
		特点: key不能重复,允许null作为键或值,线程不安全的,JDK1.2出现
		
	Hashtable
		特点: key不能重复,不允许null作为键或值,线程安全的,JDK1.0出现
		
	TreeMap
		特点: 键要么拥有比较性,要么创建TreeMap时指定比较器
		
	Properties(了解)
		Hashtable的子类
		
注意: 
	Map的底层是用Set实现的
	Set的底层是用Map实现的

Map提供的方法

增
	V put(K key, V value): 将该键值对存储到字典中
	void putAll(Map m): 添加多个
删
	V remove(Object key): 删除该key所在的键值对
		返回值: 删除的键值对中的值
	void clear(): 清空
改
	V put(K key, V value)
		注意: 如果字典中不存在该key,那么本次就是添加,如果存在就是修改
查
	int size(): 查询字典中存储的键值对的个数
	boolean isEmpty(): 查询字典是否为空
	boolean containsKey(Object key): 判断指定的key是否存在
	boolean containsValue(Object value): 判断指定的值是否存在
	V get(Object key): 获取key对应的value
	Set<K> keySet(): 获取所有key的集合
	Collection<V> values(): 获取所有值的集合
	Set<Entry> entrySet(): 获取所有键值对的集合
		Entry: 键值对
			提供的方法
				K getKey(): 获取该键值对的键
				V getValue(): 获取该键值对的值
				V setValue(V value): 给该键值对修改值

Properties的特点

可以将字典中的数据存储到文件中
也可以读取指定类型文件的数据到字典中

Properties特有方法

void store(OutputStream out, String comments)
	作用: 将字典中的数据存储到文件中
	参数: 
		out: 输出流,表示数据的存储位置
		comments: 提交信息
void load(InputStream inStream)
	作用: 加载文件,读取文件中的数据到字典中
	参数: 
		inStream: 输入流,表示读取的文件地址
String getProperty(String key)
	作用: 通过key获取字典中存储对应的value,类似于Map的get方法
	优点: 
		getProperty返回值是String类型的,get方法返回值是Value的泛型,而Properties并没有定义泛型,所以返回值为Object类型,需要手动转换为String
		
String getProperty(String key, String defaultValue)
	作用: 通过key获取对应的value
	参数: 
		key: 键
		defaultValue: 默认值
	注意: 
		如果取值时,字典中不存在该key,则返回默认值,如果存在该key,那么返回key对应的value

异常

引入

因为硬件或思考不全面导致程序出现问题,这种问题就是异常

异常的分类

Throwable: 所有错误的顶级接口
	Error: 错误
		原因: 因为硬件问题引起软件崩溃
		处理方式: 不处理
		OutOfMemoryError: 内存溢出异常,一般来说现在计算机的硬件不会导致该问题,所以当程序出现OutOfMemoryError时程序员可以通过对内存的优化,解决该问题,这个错误简称为OOM
		
	Exception: 异常
		CheckedException: 检查时异常
			原因: 因为代码编写未按照规定的语法格式去编写,无法通过开发工具的检查
			处理方式: 正确书写语法
			
		RuntimeException: 运行时异常
			原因: 在代码编写时考虑不足导致的
			处理: 修改不足或进行容错

异常出现后情况

程序闪退,不会再向下继续进行

常见的异常

空指针异常: NullPointerException
	原因: 使用null调用了属性或方法
	
数组下标越界异常: IndexOutOfBoundsException
	原因: 操作的下标不在集合下标的取值范围内
	
算法异常: ArithmeticException
	原因: 代码中的数学运算不符合数学规律,比如除数为0
	
类型转换异常: ClassCastException
	原因: 转换的对象并不是目标对象所属的类
	
数字格式异常: NumberFormatException

类不存在异常: ClassNotFoundException

异常的传递

如果在异常传递过程中,没有处理异常,异常最终会传递给JVM
JVM对异常的处理方式是让程序退出

异常的处理

1.修改代码

2.try catch
	语法: 
		try{
			有可能导致异常的代码
		}catch(异常种类1 变量名){
			//当try中的代码产生异常种类1的异常时,会执行此处代码
		}catch(异常种类2 变量名){
			//当try中的代码产生异常种类2的异常时,会执行此处代码
		}...
		finally{
			必须要执行的代码
		}
	注意: 
		1.try中的代码不要写太多
		2.finally可有可无
		3.当有多个catch时,有继承关系先写子类异常,再写父类异常,没有继承关系顺序无所谓
		
3.声明异常与抛出异常
	throws: 声明异常
		使用语法: 
			访问权限修饰符 修饰符 返回值类型 方法名(形参列表) throws 异常类1, 异常类2...{
			
			}
	throw: 抛出异常
		使用语法: 
			throw 异常对象;
		使用位置: 
			方法体
			
面试题: 
	1.throws与throw的区别?
		throws: 声明异常,在方法定义时使用
		throw: 抛出异常,在方法体中使用
	2.finally,final,finalize的区别?
		finally: 配合try catch使用,表示必须执行的代码
		final: 不可变的,可以修饰类,属性,方法,变量
		finalize: Object类提供的方法,当对象被销毁时,由系统调用

自定义异常

步骤: 
	1.创建一个类
	2.使用该类继承于异常类
	3.提供无参构造函数,在无参构造函数中调用父类无参构造函数
	4.提供有参构造函数,参数为String,其参数就是错误信息,在该构造函数中调用父类有参构造

练习

1.使用Collections对存储以下数据的集合进行排序,要求从大到小
	10,19,12,8,6,3,7,15
2.使用Map存储以下数据
	221001	焦龙飞
	221002	王羽洋
	221010	郑恩浩
	221006	张涛
	并使用四种方式遍历
import java.util.ArrayList;
import java.util.Collections;

public class Test01 {
	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		Collections.addAll(list, 10,19,12,8,6,3,7,15);
		System.out.println("排序前: " + list);
		Collections.sort(list);
		Collections.reverse(list);
		System.out.println("排序后: " + list);
	}
}

运行结果

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;

public class Test02 {
	public static void main(String[] args) {
		HashMap<String, String> map = new HashMap<String, String>();
		map.put("221001", "焦龙飞");
		map.put("221002", "王羽洋");
		map.put("221010", "郑恩浩");
		map.put("221006", "张涛");
		System.out.println(map);
		System.out.println("--------------------");
		
		Set<Entry<String, String>> entrySet = map.entrySet();
		for (Entry<String, String> entry : entrySet) {
			String key = entry.getKey();
			String value = entry.getValue();
			System.out.println(key + "------" + value);
		}
		
		System.out.println("--------------------");
		Iterator<Entry<String, String>> iterator = entrySet.iterator();
		while(iterator.hasNext()) {
			Entry<String, String> entry = iterator.next();
			String key = entry.getKey();
			String value = entry.getValue();
			System.out.println(key + "------" + value);			
		}
		
		System.out.println("--------------------");
		Set<String> keySet = map.keySet();
		for (String key : keySet) {
			String value = map.get(key);
			System.out.println(key + "------" + value);
		}
		
		System.out.println("--------------------");
		Iterator<String> iterator2= keySet.iterator();
		while(iterator2.hasNext()) {
			String key = iterator2.next();
			String value = map.get(key);
			System.out.println(key + "------" + value);
		}
	}
}

运行结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值