有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

for loop如何简化Java代码?

我对Java非常陌生,并被困在下面的作业中。我被要求在AddressBook类中创建一个方法,返回总ActivityLevel最高的Person对象

我创建了getSocialMediaActivityLevel()、maxValue()和findMostSocial()方法

findMostSocial方法确实返回了我想要的值,但是赋值的描述中包含这样一句话:“需要您设计一个简单的算法,并将其集成到现有的类中。”看起来我使用了很多不必要的代码,但我不确定如何简化我所做的工作。非常感谢您的帮助

public class SocialMediaAccount {
    private String userID;
    private String websiteName;
    private String websiteURL;
    private int activityLevel; 

    public SocialMediaAccount(String userID, String websiteName, String websiteURL, int activityLevel) {
        this.userID = userID;
        this.websiteName = websiteName;
        this.websiteURL = websiteURL;
        this.activityLevel = activityLevel;
}
    public void addSocialMediaAccount(String userID, String websiteName, String websiteURL, int activityLevel) {
        SocialMediaAccount account1;  
        account1 = new SocialMediaAccount(userID, websiteName, websiteURL, activityLevel);
        socialMediaAccounts.add(account1); 

}

  import java.util.ArrayList;
  public class Person {
      private String firstName;
      private String surname;
      private String mobile;
      private String email;
      private ArrayList<SocialMediaAccount> socialMediaAccounts;

//returns the combined ActivityLevel for all the Person's SocialMediaAccounts.
    public int getSocialMediaActivityLevel(){
        int total = 0;
            for(SocialMediaAccount e : socialMediaAccounts){
                total += e.getActivityLevel();
            }   
        return total;

}

import java.util.ArrayList;
import java.util.Collections;
public class AddressBook {
    private ArrayList<Person> contacts;

    public AddressBook(){
        contacts = new ArrayList<>();    
    }

 //returns the highest combined ActivityLevel in the ArrayList contacts
      public int maxValue(){
          ArrayList<Integer> maxActivityLevel = new ArrayList<>();
              for(Person e : contacts){
                  maxActivityLevel.add(e.getSocialMediaActivityLevel());
              }
          int maxValue = Collections.max(maxActivityLevel);
         return maxValue;
      }

 //returns the Person object in the contacts ArrayList with the highest combined ActivityLevel
      public Person findMostSocial(){
          for(Person p: contacts){
              if(maxValue() == p.getSocialMediaActivityLevel()){
                  return p;
              }  
          }
      return null;
     }

共 (1) 个答案

  1. # 1 楼答案

    我想你们需要的是Quick Sort算法来确定社交媒体活动在人员列表中的最大价值。所以,我建议用实现快速排序的方法替换maxValue()和findMostSocial()方法。这里有一个这样的implementation供参考。干杯