领扣771. 宝石与石头:https://leetcode-cn.com/problems/jewels-and-stones/
重点不是题目,题目是简单题目。
class Solution {
public int numJewelsInStones(String J, String S) {
HashSet<Character> set=new HashSet();
char[] jarray=J.toCharArray();
for(char c : jarray){
set.add(c);
}
int ans=0;
char[] sArray=S.toCharArray();
for(char c : sArray){
if(set.contains(c)){
ans++;
}
}
return ans;
}
}
首先是HashSet的应用
HashSet<Character> set=new HashSet();
HashSet是Set接口的一个实现类,不允许有重复元素,主要依据是哈希算法直接将元素指定到一个地址上,当向HashSet集合中添加一个元素时,会调用equal方法判断是否有重复元素【判断是比较它们的HashCode】。
HashSe集合的常用方法都是重写Set接口的方法,此集合允许保存null。
Set接口继承Collection接口。
Collection接口常用方法
方法 | 功能描述 |
---|---|
add(Object e) | 将指定的对象添加到该集合 |
remove(Object o) | 将指定的对象从该集合移除 |
isEmpty() | 返回boolean,用于判断集合是否为空 |
iterator() | 返回在此Collection 的元素上进行迭代的迭代器。用于遍历集合中的对象 |
size() | 返回int 型,获取该集合元素个数 |
.
//foreach语句
for(char c : jarray){
//将指定的对象添加到该集合
set.add(c);
}
for(循环变量 x : 遍历对象 obj ){
引用x的java语句;//依次读取obj中元素的值
}
.
set.contains(c);
Set的contains(Object o) 方法详解
Java的API文档指出: 当且仅当 本set包含一个元素 e
并且满足(o == null ? e==null : o.equals(e))条件时,contains()方法才返回true. 因此 contains()方法 必定使用equals方法来检查是否相等.需要注意的是: set 中是可以包含 null值的(常见的集合类都可以包含null值).
所以如果添加了null,然后判断是否包含null,将会返回true
参考: https://blog.csdn.net/violet_echo_0908/article/details/50152915