提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
1月16日练习内容
一、题目-记录点赞用户
1.题目描述
描述
为了实现社区点赞功能,要求设计一个点赞记录器,该工具包含如下两个方法:
1. like方法:该方法需要传入用户名作为参数,如果用户没点赞过,则记录本次点赞行为,若用户已经点赞过,则删除他的点赞行为。
2. getLikeUsers方法:该方法需要返回所有点赞用户的名字,不要求顺序。
(为保证答案正确,请使用HashSet完成本题)
输入描述:
用户名
输出描述:
所有点赞且未取消点赞的用户名,不要求顺序。(输出为Arrays.toString形式)
2.思路与代码
2.1 思路
1.当用户点赞过时,数组里面会存在该对象
2.输入数据,判断数组是否已经存在过,存在过则删除,不存在则加入
3.输出删除后的数组
2.2 代码
代码如下(示例):
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......
private HashSet<String> hs = new HashSet();
public void like(String username) {
if (hs.contains(username)) {
hs.remove(username);
} else {
hs.add(username);
}
}
public String[] getLikeUsers() {
return hs.toArray(new String[hs.size()]);
}
}
总结
提示:这里对文章进行总结: