HashSet
HashSet<String> set = new HashSet<>();
set.add("1111");
set.add("2222");
set.add("JavaSE");
set.add("MySQL");
set.add("JDBC");
set.add("JDBC");
//增强for循环遍历
for (String s : set) {
System.out.println(s);
}
//迭代器遍历
Iterator<String> it = set.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s);
}
元素添加过程:先调用hashCode()得到一个hashCode值,通过哈希函数的转换得到在散列表中的索引。如果索引对应的桶或者槽里没有元素就直接添加,如果有元素就会出现散列冲突,处理冲突:遍历所有的桶或者树,用equals()判断不相等则添加,相等则不添加。当添加的元素达到负载因子时,要扩容。最后返回一个布尔值,指示是否添加成功。
链表 --> 树:链表长度大于8且数组长度大于64
HashMap
-
添加相同key值的对象会被后来的替换,即相同key的键值对只能有一个
HashMap<String, Object> map = new HashMap<>();
HashMap<String, Object> map1 = new HashMap<>();
map1.put("hobby",new String[] {"学习","游泳"});
map.put("name","zs");
map.put("age",20);
map.put("age",10);//两个相同的key只能保留一个后来的value
map.put("gender","男");
map.put(null,null);
map.putAll(map1);
map.remove("hobby");//删除
System.out.println(map.get("name"));//通过key获取value
System.out.println(map.containsKey("name"));//是否包含key
System.out.println(map.containsValue(10));//是否包含value
System.out.println(map.size());//键值对个数
map.clear();//清空map
System.out.println(map.isEmpty());//键值对个数是否为0
//遍历
HashMap<String, Object> map = new HashMap<>();
map.put("name","zs");
map.put("age",20);
map.put("gender","男");
//获取所有的key,遍历所有的key,遍历key的过程中获取value
Set<String> keys = map.keySet();
for (String key : keys) {
Object value = map.get(key);
System.out.println(key + ":" + value);
}
//entrySet
Set<Map.Entry<String, Object>> entrySet = map.entrySet();
for (Map.Entry<String, Object> entry : entrySet){
String k = entry.getKey();
Object v = entry.getValue();
System.out.println(k + ":" + v);
}
properties
放到根目录下!!!
Exception
-
异常
-
异常体系
-
运行时异常
-
不需处理,可以在编码阶段注意从而避免
-
-
编译时异常
-
必须进行处理
-
-
常见异常
outofmemoryerror
stackoverflowerror
arrayindexoutofboundsexception
nullpointorexception
arithmeticexception
classcastexception
-
处理异常
-
异常对象产生:
-
通过JVM产生
-
开发人员手动抛出
-
-
处理:
-
方法内部处理
try{ //编写可能出现的代码 }catch(异常的类型 异常类对象的名字){//(写异常类对象) //可以有多个catch //编写异常处理/捕获的代码 }finally{ //不管是否出现异常都会被运行 //非必须,可省略 }
-
抛给上层(调用者) --> 抛给main() --> 抛给JVM --> 程序崩溃
-
[修饰符] 返回值类型 方法名(参数列表) throws 异常类型1,异常类型2{
方法体;
return 返回值;
}
-
什么时候用?
调用的方法在声明时有throws
-
自定义异常类步骤
1)创建类
2)继承Exception或者它的子类 -- 异常
Exception e = new Exception();
throws e;