Улучшение производительности моих методов - PullRequest
0 голосов
/ 28 мая 2018

Добрый вечер,

У меня есть довольно громоздкий и нечитаемый код, который я пытаюсь упростить, есть ли хорошие практики, которые вы можете порекомендовать

public static String getPropertybyId(){
       Scanner reader = new Scanner(System.in);  // Reading from System.in
   System.out.println("Enter an id number to search properties: ");
   int n = reader.nextInt(); // Scans the next token of the input as an int.
  reader.close();
  System.out.println(id.get(n) +", "+ property_address.get(n) +", "+ first_name.get(n) +", "+ last_name.get(n) +", "+
  email.get(n) +", "+
  owner_address.get(n) +", "+
  price.get(n)+", "+
  date_sold.get(n));


  return id.get(n) +" ,"+ property_address.get(n) +" ,"+ first_name.get(n) +" ,"+ last_name.get(n) +" ,"+
  email.get(n) +" ,"+
  owner_address.get(n) +" ,"+
  price.get(n);
}


    public static void getTopProperties(){
  price.remove(0);
  int n = 0;
  while (n < price.size()){
    price.set(n,((price.get(n)).substring(1)));
    n = n + 1;
  }

     Collections.sort(price);
 Scanner reader = new Scanner(System.in);  // Reading from System.in
 System.out.println("Enter a number for the list size of top properties: ");
 int user = reader.nextInt(); // Scans the next token of the input as an int.
 shrinkTo(price, user);
 reader.close();
 System.out.println(price);

  }

  public static void shrinkTo(List list, int newSize) {
int size = list.size();
if (newSize >= size) return;
for (int i = newSize; i < size; i++) {
    list.remove(list.size() - 1);
}

Для getPropertybyID я возвращаю вседетали для собственности, такие как имя владельца и цена согласно номеру удостоверения личности.Есть ли способ, чтобы hashmap или связать различные массивы вместе, чтобы у меня не было такого длинного оператора return?

вот мои массивы:

    private static List<String> id = new ArrayList<String>();
  private static List<String> property_address = new ArrayList<String>();
  private static List<String> first_name = new ArrayList<String>();
      private static List<String> last_name = new ArrayList<String>();
  private static List<String> email = new ArrayList<String>();
  private static List<String> owner_address = new ArrayList<String>();
  private static List<String> price = new ArrayList<String>();
  private static List<String> date_sold = new ArrayList<String>();

для getTopProperties, которые я хотел бы удалитьвызов другого класса и добавление этого дополнительного кода, но я не знаю, как.

Извините, если мой код не очень хорош, я новичок

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Вы можете передать все это в отдельный метод, выполнить преобразование String и вернуть его обратно, прежде чем вернуть обратно

примерно так ...

    private String getPropertyDetials(int index) {
            return id.get(index) +" ,"+ property_address.get(index) +" ,"+ first_name.get(index) +" ,"+ last_name.get(index) +" ,"+
  email.get(index) +" ,"+
  owner_address.get(index) +" ,"+
  price.get(index);
        }

Дальнейшее улучшение читабельности,подумайте о создании класса модели и переопределении метода ToString для выполнения вышеизложенного, и, как и FileNotFoundEx, вам нужно изучить концепции ООП

0 голосов
/ 28 мая 2018

Я бы не стал дублировать упражнение String, а вместо этого использовал бы форматирование для построения String один раз.Кроме того, это плохая идея для close Scanner, который включает System.in (это global ).Вместо этого отделите читателя от метода;и передайте это. Или, что еще лучше, разделите проблемы и передайте n.Мол,

public static String getPropertybyId(int n) {
    String fmt = "%s, %s, %s, %s, %s, %s, %s, %s";
    String msg = String.format(fmt, id.get(n), property_address.get(n), 
            first_name.get(n), last_name.get(n), email.get(n), 
            owner_address.get(n), price.get(n), date_sold.get(n));
    System.out.println(msg);
    return msg;
}
0 голосов
/ 28 мая 2018

Вам необходимо использовать ООП.Объектно-ориентированное программирование позволит вам упростить весь этот жанр проблем.Ваш код сократится и станет более простым / читабельным.

Читайте об этом здесь и удивляйтесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...