1.Set,List,Map的区别
一: Set 不允许重复,List允许重复
二: Set 无序,List有序 .
三:map一个映射不能包含重复的键;每个键最多只能映射一个值。以键值对存放数据
以上三个都是接口且不能被实例化。
2.HashSet与LinkedHashSet,TreeSet的区别特点
一:类HashSet和LinkedHashSet都是接口Set的实现,两者都不能保存重复的数据。主要区别是HashSet不保证集合中元素的顺序,即不能保证迭代的顺序与插入的顺序一致。
二:而LinkedHashSet按照元素插入的顺序进行迭代,即迭代输出的顺序与插入的顺序保持一致。
三:TreeSet:它可以给Set集合中的元素进行指定方式的排序。
保证元素唯一性的方式:通过比较的结果是否为0.
底层数据结构是:二叉树。
四:TreeSet的使用
equals 比较的是对象内部的内容
使用的两个对象必须实现Comparable接口的compareTo方法
在compareTo里面实现具体该如何比较
3.HashMap与HashSet的特点区别
(1)HashMap的基础使用
//HashMap集合 存储数据的特点:键key-值value
//key不能重复 可以使任意的对象类型 通常使用字符串String
HashMap<String, Integer> score = new HashMap<>();
//添加对象:键值对
score.put("chinese", 91);
score.put("math", 123);
score.put("english", 144);
//获取键值对的个数
score.size();
//获取所有的key
score.keySet();
System.out.println(score.keySet());
//获取所有的值
System.out.println(score.values());
//获取Entry:key-value
System.out.println(score.entrySet());
//获取一个键key对应的值
System.out.println(score.get("english"));
(2)键值对的遍历
1.通过遍历key或者value来得到对应的键值对
for (String key : score.keySet()) {
int s = score.get(key);
System.out.println("key:" + key + "value:" + s);
}
for (int value : score.values()) {
Integer b=score.get(value);
System.out.println("key:" +b+ "value:" +value );
}
2,通过EntrySet得到Entry对象的集合
//一个Entry管理一个键值对 getKey getValue
Set<HashMap.Entry<String, Integer>> entrys = score.entrySet();
for (Map.Entry entry : entrys) {
String key = (String) entry.getKey();
//获取Entry的值
Integer value = (Integer) entry.getValue();
System.out.println("key:" + key + "value:" + value);
}
4.异常的基础知识:
异常处理 处理运行过程中出现的不可控的错误 使程序更健壮
Exceptionl-
try{
执行的代码
可能出现异常,一旦出现异常 系统自动为我们创建一个异常对象 并抛出
}catch(NullPointerException e){
如果需要自己处理异常就catch
} catch(IOException e){
如果有多个异常 可以使用多个catch来捕获
如果有多个异常 catch的顺序是从小到大
} catch(Exceptionl e){
} finally{
不管有没有异常finally都会被执行
处理资源回收 网络连接 数据库连接 I/0流
}
如果异常出现 后面的代码将不会执行
try代码块 不要抓太多代码
使用throws抛出异常 给外部处理
当特殊情况出现了 自己可以选择抛出异常
throw
throw new IllegalAccessException();
1.基础异常
int a=0;
int b=20;
FileReader fr=null;
try{
int c=b/1;
System.out.println("hello");
fr=new FileReader(" ");
}catch (ArithmeticException e){
System.out.println(e.getMessage());
}catch (FileNotFoundException e){
e.printStackTrace();
}finally {
try {
fr.close();
} catch (IOException i) {
}
}
结果:
2.自定义异常类
(1)主函数里
try{
HSLException.test3();
}catch (HSLException e){
System.out.println(e.getMessage());
}
}
(2)自己创建类
static class HSLException extends Exception{
//1.提供一个无参构造方法
public HSLException(){
}
//2.提供一个有参数的构造方法
public HSLException(String desc){
super(desc);
}
public static void test3()throws HSLException{
StackTraceElement[] stackTrace=Thread.currentThread().getStackTrace();
StackTraceElement e=stackTrace[2];
String detail=e.getFileName()+"->"+e.getMethodName()+"->"+e.getLineNumber();
throw new HSLException("自己的异常类:无所作为"+detail);
}
}
5.心得
今天的内容容易听懂但是太杂糅了 其中包含的东西太多太空洞,总结起来也头疼,只能先初步总结稍微熟悉点知识点等后面实际使用的时候来加深印象了 加油吧