题解 | #记录点赞用户#
记录点赞用户
https://www.nowcoder.com/practice/19a766a67cdc4eb0a354d70597cf008b
import java.util.*;
public class Main {
public static void main(String[] args) {
LikeRecorder recorder = new LikeRecorderImpl();
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String name = scanner.next();
recorder.like(name);
}
System.out.println(Arrays.toString(recorder.getLikeUsers()));
}
}
/**
* 点赞记录器
*/
interface LikeRecorder {
/**
* 若用户没有点赞过,则记录此次点赞行为。
* 若用户曾经点赞过,则删除用户点赞记录。
*
* @param username 用户名
*/
void like(String username);
/**
* 返回所有点赞的用户名
*
* @return 用户名数组
*/
String[] getLikeUsers();
}
class LikeRecorderImpl implements LikeRecorder {
// write your code here......
// 创建集合对象
HashSet<String> hs = new HashSet<String>();
public LikeRecorderImpl(){
super();
}
@Override
public void like(String name){
// 添加元素
// hs.add(name);// 两次点赞就要取消点赞,例如Lucy有2次点赞行为,Tom有3次点赞行为 ,Lucy取消点赞,Tom第3次点赞成功。 所以不能直接添加到HashSet。
if(hs.contains(name)){
hs.remove(name);
}else {
hs.add(name);
}
}
@Override
public String[] getLikeUsers(){
// String[] str;
// for(String s : hs){
// // System.out.print(s);
// }
String[] str = new String[0]; // 数据类型 [] 数组名 = new 数据类型[数组长度]; // 动态初始化
return hs.toArray(str); // 调用 HashSet集合的toArray方法
}
}

