2014-02-18 7 views
-5

Мне было просто интересно, есть ли способ переименовать переменную, назначенную ArrayList ... Или мне просто нужно создать другую, просто сделав ее точно такой же.Можно ли переименовать ArrayList?

+1

Я не думаю, что можно переименовать переменную, но, как вы сказали, можно скопировать ее в другую. – Student

+1

В чем проблема с переименованием текущей переменной? Если это ваш код, вы можете указать свои переменные, как хотите. – Pshemo

+5

Звучит как пример проблемы XY ... (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - чего вы пытаетесь достичь? – berry120

ответ

2

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

ArrayList original = ...; 
ArrayList newList = original; 

Я должен отметить, что, так как ArrayList является ссылочным типом, оригинальный и NewList оба указывают на то же самое данных в памяти. Если вы добавите элемент в оригинал или в новый список, это повлияет на оба. Он не создает вторую копию ArrayList. Однако немного сложно понять, о чем вы просите.

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

+0

Если вы хотите использовать 'newList' вместо' оригинала', тогда это путь! Если, однако, вы хотите использовать 'newList', продолжая использовать« оригинал »другим способом, ваш' newList' должен быть реальной копией «оригинала», а не просто копировать ссылку (например, здесь) – GameDroids

-1

Если вы имеете в виду, переименовав с использованием другой ссылки, чем вы можете просто сделать

ArrayList newListRef = oldListInstance; 
//use newListRef thereafter 

Если вы имеете в виду, чтобы изменить некоторые из элементов, удерживающих порядок затем -

ArrayList динамичен по размеру. Вы можете добавлять и удалять элементы в и из определенного индекса и упорядочивания в сохраненных. Поэтому нет необходимости создавать отдельный список. Если вы хотите изменить определенный элемент, просто удалите его и добавьте новый элемент в этот индекс.

APIs

public E remove(int index) 
public void add(int index, E element) 
+0

Not что я - downvoter, но кажется, что этот вопрос касается имени переменной, используемого для хранения ArrayList, такого как «List variableName = new ArrayList()», а не о том, как изменить содержимое списка. – Pshemo

0

Вы можете попробовать это

List<Double> original =new ArrayList<Double>(); 
List<Double> copy = new ArrayList<Double>(original); 
0

Вы не можете переименовать любой переменной в то время как программа работает.

Но вы можете переименовать его во время разработки. Затем скомпилируйте и запустите.

1

Во-первых, я хотел бы указать, что «переименование» переменной на самом деле не является концепцией, которая не имеет никакого сходства с тем, как работает «reference» или «identifier». Вы не можете изменить переменные идентификатор (вроде как имя переменной), но вы можете передать значение переменной другой переменной с другим идентификатором.

Когда переменная относится к Object или дочернему объекту класса Object (например, ArrayList), переменная ссылочного типа хранит данные, указывающие положение этого объекта в памяти. Поэтому передача данных этой ссылки в другую ссылку означает, что теперь есть две ссылки Object, которые 'ссылаются на' на тот же объект в памяти.

С технической точки зрения, если вы хотите присвоить этому объекту имя, которое вы могли бы использовать для его идентификации позже, это возможно, создав пользовательский класс, который расширяет ArrayList (или любой другой объект). Например;

public class NamedArrayList extends ArrayList{ 

    private String listName = "default_name"; 

    public String getListName(){ 
     return listName; 
    } 

    public void setListName(String listName){ 
     this.listName = listName; 
    } 
} 

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

Смежные вопросы