Импортировать Array и работать с ним после

Чтобы поддерживать самый чистый код, мне случается устанавливать array String (ej. имена городов). Если он захочет действовать с этим array, чтобы распределять ему стоимость и потом упорядочивать это в зависимости от этой стоимости: он был бы должен включать все эти операции в класс, с которого я буду импортировать array, или Java позволяет мне действовать с ним однажды импортируемым?

public static void main(String[] args) {
    String[] miArray = { "Tokio", "Moscú", "Paris" };
    myArray[0] = 5;
    myArray[1] = 8;
    myArray[2] = 3;
    Arrays.sort(myArray);
}
1
задан 28.03.2016, 17:45
2 ответа

Договоренности или arrays в Java не нуждаются в том, чтобы импортироваться, могут определяться договоренности любого типа. Кроме того, договоренности - статического размера, а именно, не позволяют ни увеличивать, ни уменьшать Ваш размер, поэтому, если ты признаешь твою договоренность 3 элементов, тогда ты не можешь добавлять четвертый элемент или сводить Ваш размер к 2 или меньше.

То, что ты ищешь, может быть, так это список List что использовал договоренность, чтобы хранить данные, что ты это получаешь с классом ArrayList. Этот класс да позволяет увеличивать и уменьшать Ваш соответствующий размер растет в данных или сокращаясь. Другое, которое ты можешь делать, состоит в том, чтобы инициализировать список начиная с договоренности. Основанный на примере, который ты поставляешь, код был бы таким образом:

import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
import java.util.Collections;

public static void main(String[] args) {
    List<String> listaCiudades = new ArrayList<>(Arrays.asList("Tokio", "Moscú", "Paris"));
    /*
      código comentado porque no tienen ningún sentido
      Java no es script, no es como JavaScript o Ruby
      donde los arreglos soportan cualquier tipo de dato
      a menos que definas tu arreglo como arreglo de objetos Object[]
    myArray[0] = 5;
    myArray[1] = 8;
    myArray[2] = 3;
    */
    Collections.sort(listaCiudades);
    System.out.println(listaCiudades);
}
4
ответ дан 24.11.2019, 14:41
  • 1
    Я понимаю, в таком случае, если в и # 241; ado новые элементы и я распределяю им стоимость, не быть и # 237; в необходимый вновь давать стоимость старым элементам, и #191; нет? Быть достаточным и # 237; чтобы с вновь использовать м и # 233; совсем: и #39; Collections.sort (listaCiudades) и #39;. – Pablo León 28.03.2016, 21:05
  • 2
    Точный. Только звонить и # 237; схвати в м и # 233; совсем add, таким образом: listaCiudades.add("Lima");, и если потом ты хочешь упорядочить их снова, используй м и # 233; совсем Collections#sort. –  28.03.2016, 21:08

Ты можешь использовать static, чтобы помечать секцию кода, как статический, это позволяет тебе реализовывать операции инициализации в статических признаках класса.

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

public class ListaCiudades {
  private static List<String> listaCiudades;

  static {
    listaCiudades = new ArrayList<String>(Arrays.asList("Tokio", "Moscú", "Paris"));
  }

  public static List<String> sort() {
    Collections.sort(listaCiudades);
    return Collections.unmodifiableList(listaCiudades);
  }

}

Добавочная проблема, которая у тебя может быть, состоит в том, чтобы кто-то добавил или удалил элементы в список, чтобы это предотвращать, мы используем метод, который позволяет, что список был неизменным, я присоединяю тебя тест с Вашим функционированием.

Этот тест проверяет, что список упорядочен правильно:

@Test
public void testListaOrdena() {
  List<String> listNoModificable=ListaCiudades.sort();

  assertThat(listNoModificable.get(0),is(equalTo("Moscú")));
  assertThat(listNoModificable.get(1),is(equalTo("Paris")));
  assertThat(listNoModificable.get(2),is(equalTo("Tokio")));

}

Этот другой тест показывает тебе, что, если ты пробуешь добавлять элемент к списку, не было возможно, гарантируя, так что список не может быть измененным, производя исключение типа UnsupportedOperationException:

@Test(expected=UnsupportedOperationException.class)
public void testListaNoModificable() {
  List<String> listNoModificable=ListaCiudades.sort();
  listNoModificable.add("Lima");
}

Это одинокое идея, возможно делать больших других форм.

0
ответ дан 24.11.2019, 14:41

Теги

Похожие вопросы