这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战
今天继续~
HashSet
- 是一个不允许有重复元素的集合
- HashSet是无序的
- 实现了Set接口
HashSet的创建
- 在使用HashSet之前需要把它引入:
import java.util.HashSet;
HashSet<String> sites = new HashSet<String>();
添加元素
- 使用
add()方法添加元素
import java.util.HashSet;
public class Test{
public static void main(String[] args){
HashSet<String> sites = new HashSet<String>();
sites.add("Hello");
sites.add("World");
sites.add("World");
}
}
ps:第二个World不会被添加,因为HashSet所有的值是唯一的
判断元素是否存在
- 使用
contains()方法来判断元素是否存在
import java.util.HashSet;
public class Test{
public static void main(String[] args){
HashSet<String> sites = new HashSet<String>();
sites.add("Hello");
sites.add("World");
sites.add("World");
System.out.println(sites.contains("Hello"));
}
}
ps:contains()返回true/false
删除元素
- 使用
remove()方法来删除元素
import java.util.HashSet;
public class Test{
public static void main(String[] args){
HashSet<String> sites = new HashSet<String>();
sites.add("Hello");
sites.add("World");
sites.remove("World");
}
}
- 想要删除所有的集合元素可以使用
clear()方法
sites.clear();
计算大小
- 使用
size()方法来计算元素数量
import java.util.HashSet;
public class Test{
public static void main(String[] args){
HashSet<String> sites = new HashSet<String>();
sites.add("Hello");
sites.add("World");
System.out.println(sites.size());
}
}
ps:返回整数
迭代HashSet
- 使用foreach来迭代HashSet
import java.util.HashSet;
public class Test{
public static void main(String[] args){
HashSet<String> sites = new HashSet<String>();
sites.add("Hello");
sites.add("World");
for(String i:sites){
System.out.println(i);
}
}
}
HashMap
- 是一个散列表,存储内容是键值对
- HashMap是无序的
- 实现了Map接口
HashMap的创建
- 要使用HashMap就需要先把它引入
import java.util.HashMap;
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
添加元素
- 可以使用
put()方法来添加元素,第一个是键,第二个是值
import java.util.HashMap;
public class Test{
public static void main(String[] args){
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
Sites.put(1,"CSGO");
Sites.put("Hello","World");
}
}
访问元素
- 可以使用
get(key)方法获取相应的value
import java.util.HashMap;
public class Test{
public static void main(String[] args){
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
Sites.put(1,"CSGO");
Sites.put("Hello","World");
System.out.println(Sites.get("Hello"));
}
}
删除元素
- 可以使用
remove(key)方法来删除相应的键值对
import java.util.HashMap;
public class Test{
public static void main(String[] args){
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
Sites.put(1,"CSGO");
Sites.put("Hello","World");
Sites.remove("Hello");
}
}
- 删除所有的键值对可以使用
clear()方法
Sites.clear();
迭代HashMap
- 可以使用foreach来迭代HashMap
- 如果想获取key,可以使用
keySet()方法 - 如果想获取value,可以使用
values()方法
import java.util.HashMap;
public class Test{
public static void main(String[] args){
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
Sites.put(1,"CSGO");
Sites.put("Hello","World");
for(Integer i:Sites.keySet()){
System.out.println("key="+i);
}
for(String value:Sites.values()){
System.out.print("value="+value);
}
}
}
延伸:print,printf,println的区别
- print:最标准的输出,但是不会换行
- println:也是输出,但是结尾会换行
- printf:还是输出,但是它是格式化的输出
HashMap的其他方法
clone - 复制一份hashMap
isEmpty - 判断hashMap是否为空
putAll - 将所有键值对添加到hashMap中
putIfAbsent - 如果hashMap中没有相应的键值对,则添加一对到hashMap中
containsKey - 检查hashMap中是否存在指定的key对应的映射关系
containsValue - 检查hashMap中是否存在指定的value对应的映射关系
replace - 将key对应的value值替换
replace(key,oldValue,newValue)
replaceAll - 将hashMap中的所有键值对替换成指定函数执行的结果
replaceAll((key,value)->function)