从零开始学java - 第十七天

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

getOrDefault - 获取指定key对应的value,如果找不到则返回默认值

entrySet - 返回hashMap中所有映射项的集合

keySet - 返回hashMap中所有key的集合

merge - 添加键值对到hashMap中

compute - 对key指定的value进行重新计算(计算属性)

computeIfAbsent() - 对key指定的value进行重新计算,如不存在key则添加

computeIfPresent() - 对key指定的value进行重新计算,但需要key存在与hashMap中

猜你喜欢

转载自juejin.im/post/7031450398925783077