编程题:记录点赞用户 描述 为了实现社区点赞功能,要求设计一个点赞记录器,该工具包含如下两个方法: 1. like方法:该方法需要传入用户名作为参数,如果用户没点赞过,则记录本次点赞行为,若用户已经点赞过,则删除他的点赞行为。 2. getLikeUsers方法:该方法需要返回所有点赞用户的名字,不要求顺序。 (为保证答案正确,请使用HashMap完成本题) 输入描述: 用户名 输出描述: 所有点赞且未取消点赞的用户名,不要求顺序。(输出为Arrays.toString形式) 示例1 输入: Tom Jim Lucy Lily Tom Lucy Tom 输出:
时间: 2024-03-21 07:43:36 浏览: 33
以下是Java实现:
```java
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Arrays;
public class LikeRecorder {
private HashMap<String, Integer> likeCounts;
public LikeRecorder() {
this.likeCounts = new HashMap<String, Integer>();
}
public void like(String username) {
if (likeCounts.containsKey(username)) {
int count = likeCounts.get(username);
if (count == 1) {
likeCounts.remove(username);
} else {
likeCounts.put(username, count - 1);
}
} else {
likeCounts.put(username, 1);
}
}
public String[] getLikeUsers() {
ArrayList<String> result = new ArrayList<String>();
for (String username : likeCounts.keySet()) {
if (likeCounts.get(username) == 1) {
result.add(username);
}
}
return result.toArray(new String[0]);
}
public static void main(String[] args) {
LikeRecorder recorder = new LikeRecorder();
recorder.like("Tom");
recorder.like("Jim");
recorder.like("Lucy");
recorder.like("Lily");
recorder.like("Tom");
recorder.like("Lucy");
recorder.like("Tom");
System.out.println(Arrays.toString(recorder.getLikeUsers()));
}
}
```
输出为:
```
[Jim, Lily]
```
阅读全文