【问题标题】:is there any way to refactoring or improve this code?有没有办法重构或改进这段代码?
【发布时间】:2021-04-10 08:20:37
【问题描述】:

有下一个代码,

主要:

    public static void main(String[] args) {
        GroupOfUsers group = new GroupOfUsers();
        List<String> users = group.getUsers();
        System.out.println("The users are: " + users);

    }

类 GroupOfUsers:

public class GroupOfUsers {
    
    private static HashMap<String, Integer> usersWithPoints = new HashMap<String, Integer>() {{
        put("User1", 800);
        put("User2", 550);
        put("User3", 20);
        put("User4", 300);
    }};

    public List<String> getUsers() {
        List<String> users = new ArrayList<String>();

        //Sorting users by points
        usersWithPoints.entrySet()
        .stream()
        .sorted(Map.Entry.<String, Integer>comparingByValue().reversed())
        .forEachOrdered(x -> users.add(x.getKey()));

        //Capitalizing the names of the users
        List<String> usersCapitalized = new ArrayList<String>();
        users.forEach(x -> usersCapitalized.add(x.toUpperCase()));

        return usersCapitalized;
    }
}

问题:

您将从这段代码中重构哪些内容?你会改进什么吗?谢谢。

【问题讨论】:

    标签: java refactoring


    【解决方案1】:

    不要试图避免创建对象。您正在与用户打交道,因此创建一个 User 对象。代码将更容易阅读和维护。让我告诉你:

    public class User {
    
      private String name;
      private int points;
    
      public User(String name, int points) {
        this.name = name;
        this.points = points;
      }
    
      public String getName() {
        return this.name;
      }
    
      public int getPoints() {
        return this.points;
      }
    }
    
    List<User> usersWithPoints = Arrays.asList(
      new User("User1", 800),
      new User("User2", 550),
      new User("User3",  20),
      new User("User4", 300)
     );
    
    return usersWithPoints
      .stream()
      .sort(Comparator.comparingInt(User::getPoints).reversed())
      .map(User::getName)
      .map(String::toUpperCase)
      .collect(Collectors.toList());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多