题解 | #记录点赞用户#

记录点赞用户

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方法
    }

}

全部评论

相关推荐

accaacc:2到4k,不是2k到4k,所以年薪是30块
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务