Я хочу использовать коллекцию вместо 2D множества так, чтобы я не должен был давать его размер во время декларации, и я могу добавить столько элементов, сколько я хочу динамично.
Проблема со списком> заключается в том, что вам нужно изменить размер каждой строки, если вы хотите изменить размер своей матрицы.
Если вы хотите использовать разреженную матрицу или, возможно, бесконечную матрицу, вы можете сделать что-то вроде:
class SparseMatrix<X> {
private Map<Coord, X> values = new HashMap<Coord, X>();
public SparseMatrix() {
}
public X get(int x, int y) {
return values.put(new Coord(x,y)); // null if there's no value
}
public void set(int x, int y, X value) { // you can use null (like in a List)
values.set(new Coord(x,y), value);
}
private static class Coord {
int x; int y;
public Coord(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public boolean equals(Object other) {
if (other instance of Coord) {
Coord o = (Coord) other;
return o.x == x && o.y == y;
}
return false;
}
@Override
public int hashCode() {
return o.x + o.y; // or some more clever implementation :)
}
}
}
Изменить: Apache Commons HashCodeBuilder - отличный инструмент для генерации хэш-кодов.
Импорт java.util.arrayList;
ArrayList
- это то, что вы хотите, вам не нужно настроить его размер создания, и вы можете добавлять элементы Динамически используя метод
.
Самый простой способ - использовать вложенные коллекции ... Скажем (при условии, что ваши значения строки) Список <Список
, который затем можно использовать следующим образом:
List<List<String>> fakeArray = new ArrayList<List<String>>();
// Pretend you fill it with values between these calls
String retrieve = fakeArray.get(0).get(0);
Редактирование: это было изначально карта
, которая действительно не иметь смысл в этом контексте.
Тем не менее, вы можете узнать, если коллекции Google или коллекции Apache Commons имеют что-то более специализированное, что вы можете использовать.
Что вы хотите иметь с этим? Я, вероятно, просто будет просто использовать коллекцию
(где коллекция может быть заменена по списку).
Или вы можете создать свой собственный класс с Metods для переворачивания рядов или столбцов или всех элементов по мере необходимости.
Я лично использую вектор Класс для этой цели, хотя и различные требования могут в конечном итоге диктовать использование других, более специализированных классов.
Java.util.arrayList - мой предпочтительный выбор.
http://java.sun.com/j2se/1.5.0/docs/api/java/util/arraylist.html
Вот решение, которое можно найти при работе с OpenVMS:
01 WS-STRING-LENGTH PIC S9(04) COMP.
CALL "STR$TRIM" USING BY DESCRIPTOR user_output,
user_input,
BY REFERENCE WS-STRING-LENGTH.
-121--4294063- Ведите отдельный репозиторий ваших крючков и symlink в этом.
Я согласен, было бы неплохо, если бы у Гита был встроенный механизм распространения сценариев крючков, но это не так.
-121--1499669-Это зависит от того, что вы пытаетесь сделать, но я рекомендую ArrayList. Это быстрее, чем Вектор. Если только тебя не волнует синхронизация! Если требуется создать 2-мерный список, создается ArrayList, и каждый элемент этого списка будет другим ArrayList.
Ведите отдельный репозиторий ваших крючков и symlink в этом.
Я согласен, было бы неплохо, если бы у Гита был встроенный механизм распространения сценариев крючков, но это не так.
-121--1499669-Это зависит от того, что вы пытаетесь сделать, но я рекомендую ArrayList. Это быстрее, чем Вектор. Если только тебя не волнует синхронизация! Если требуется создать 2-мерный список, создается ArrayList, и каждый элемент этого списка будет другим ArrayList.
-121--2717470- Можно выполнить пробную версию с ArrayList
, имеющим ArrayList
s, как предметы. Если это не сделает то, что вы хотите, это даст понимание того, что вы должны построить сами.
Это зависит от того, как вы хотите использовать структуру данных. Ваши варианты:
Редактировать: Я полностью неправильно прочитал вопрос; Я думал, что это около 2D-массива ширины 2.
Правильно прочитав вопрос (я надеюсь :-)), я согласен с теми, кто сказал список списков.