题解 | #记录点赞用户#
记录点赞用户
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方法 } }