这是我参与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)
复制代码