Есть ли какие-либо эффективные классы Arraylist 2D для Java? -- java поле с участием arrays поле с участием multidimensional-array поле с участием arraylist пол Связанный проблема

Are there any efficient 2D ArrayList classes for Java?


6
vote

проблема

русский

Я знаю, что можно создать 2D ArrayList с button0 , но это громоздкий и реальный кошмар, когда речь идет о добавлении и извлечения объектов.

Есть ли какие-нибудь классы ArrayList 2D, которые делают эту вещь более эффективно? Я пишу настоящий 2D-класс Arraylist с нуля, и мне интересно, есть ли кто-то еще, кто сделал такого рода вещью эффективным образом.

Английский оригинал

I know that it's possible to create a 2D ArrayList with ArrayList<ArrayList<E>>, but that is cumbersome and a real casting nightmare when it comes to adding and retrieving objects.

Are there any 2D ArrayList classes that do this sort of thing more efficiently? I am writing a true 2D ArrayList class from the ground up, and I'm wondering if there is anyone else who has done this sort of thing in an efficient manner.

</div
           
   
   

Список ответов

5
 
vote
vote
Лучший ответ
 

Нет, к сожалению, нет 2D класса ArrayList. Ваши альтернативные варианты (в случае 0/1/2 диаметра постоянны):

 <код> MyType[][] myList = new MyType[n][m];   

или

 <код> ArrayList<MyType>[] myList = new ArrayList<MyType>[n];   

или

 <код> ArrayList<ArrayList<MyType>> myList = new ArrayList<ArrayList<MyType>>();   

Другой вариант состоит в том, чтобы сохранить все ваши данные в 1D ArrayList и создать функцию, которую получают (X, Y) и верните место X в ArrayList. Таким образом, вы демонстрируете вне 2D массива, но легко сохраняйте элементы в 1D ArrayList

 

no, unfortunately there isn't 2d ArrayList class. your alternative options are (in case 0/1/2 of the Diamension is constant):

MyType[][] myList = new MyType[n][m]; 

or

ArrayList<MyType>[] myList = new ArrayList<MyType>[n]; 

or

ArrayList<ArrayList<MyType>> myList = new ArrayList<ArrayList<MyType>>(); 

another option is to save all your data in 1d ArrayList and create a function that recieve (x,y) and return the place x in the ArrayList. this way you demonstrate outside a 2d array, but save the elements easily in 1d ArrayList

</div
 
 
1
 
vote

Использование «ArrayList & GT»; Тип подхода - это прекрасный и довольно стандартный для такого рода вещи из того, что я видел. Вы можете легко написать класс списка массива в 2D, который обеспечивает удобные методы для добавления / удаления элементов и т. Д., И это будет далеко не «громоздко» или «кастинг Nightmare», чтобы использовать это. Посмотрите на Это реализация в качестве примера. Это не совсем идеально, но это иллюстрирует, как легко использовать этот вид подхода.

 

Using the "ArrayList>" type approach is fine and pretty standard for this kind of thing from what I have seen. You can easily write a 2D array list class that provides convenience methods for adding / removing items, etc, and it will be far from "cumbersome" or "a casting nightmare" to use this. Have a look at this implementation as an example. It is not quite perfect but it illustrates how easy it is to use this kind of approach.

</div
 
 
1
 
vote

Посмотрите на FastTable в Javolution и Таблица / P >.

 

Have a look at FastTable in javolution and Table implementations in guava

</div
 
 
 
 
0
 
vote

Google Collections имеет таблицу коллекции. Он выложен как строки / Коллс и доступны непосредственно, Bycol и Rows. Различные реализации таблицы имеют различные эффективности на основе типа доступа

 

Google Collections has a Table collection. It's laid out as Rows/Cols and accesible directly, bycol, and by rows. Different implementations of Table have different efficiencies based on access type

</div
 
 
0
 
vote

Я построил структуру данных 3D "Grid", если это какая-либо помощь.

    .
  • https: // github. COM / Mikera / Mikera / Blob / Master / Src / Main / Java / Mikera / Engine / TreeGrid.java

Ключевой трюк - это подразделение в разделе «Блоки», так что редкие данные могут быть эффективно сохранены.

Вы можете использовать его как 2D-коллекцию, если хотите, игнорируя размер Z (сохраняя его в 0), хотя это, вероятно, немного изготавливается. Тем не менее, вариант, если вы хотите такого рода структуру. Кроме того, вы можете упростить его до 2D.

 

I built a 3D "grid" data structure, if it is any help.

  • https://github.com/mikera/mikera/blob/master/src/main/java/mikera/engine/TreeGrid.java

The key trick is sub-dividing space into "blocks" so that sparse data can be efficiently stored.

You can use it as a 2D collection if you like by ignoring the z dimension (keeping it at 0), though that is probably a bit of overkill. Still, an option if you want this kind of structure. Alternatively, you could simplify it down to 2D.

</div
 
 

Связанный проблема

1  Могу ли я нажать на свой собственный объект пользователя в Security SecurityContext?  ( Can i push my own user object into springs securitycontext ) 
Я новичок в весенней безопасности и последовал за некоторыми основными рецептами, чтобы получить весеннюю безопасность, работающую в моем заявлении, но теперь...

1  Обратитесь к веб-странице внутри файла JAR  ( Refer to a web page inside a jar file ) 
У меня есть рабочий проект. Он включает в себя другой проект, который имеет дело с отдыхом как REST-API.jar. Теперь я сделал одностраничное интернет-интерфе...

1  Кварц Schdeuler для нескольких проектов в JBOSS 5  ( Quartz schdeuler for multiple projects in jboss 5 ) 
Я развернул два проекта (P1 & AMP; P2) в JBOSS 5. Оба проекта настроены с различными кварцевыми планировщиками. Но когда я заплатурую работу на P1, он доступа...

0  Строка заменить приключение в Java  ( String replace adventure in java ) 
Я пытаюсь добиться этого - если строка содержит шаблон <код> %25 с последующим любое количество альфа-цифровых символов, то мне нужно заменить <код> %25 с <...

1  Простое Javaee HTML Get / Post Application  ( Simple javaee html get post application ) 
Я просто начинаю с Javaee (я вполне свободно владею в Javase), и у меня возникли проблемы с обездованием моего мозга вокруг всех новых вещей, которые необходи...

1  Android ListView с некоторыми показанными элементами и показывать больше кнопки  ( Android listview with some items shown and show more button ) 
Я нахожу его трудно искать то, что я ищу, поэтому я думал, что постараюсь объяснить это здесь. В настоящее время у меня есть пользовательский список в ScrollV...

1  Как увеличить предел параллельного соединения OpenFire?  ( How to increase openfire concurrent connection limit ) 
Я пытаюсь проверить, сколько одновременных пользовательских подключений Openfire может обрабатывать. Я заметил предел при 4000 пользователями. Как я могу ...

49  Как извлечь строку между двумя разграничителями [дубликат]  ( How to extract a string between two delimiters ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

56  Когда использовать явное ожидание против неявного ожидания в Webdriver Selenium?  ( When to use explicit wait vs implicit wait in selenium webdriver ) 
Я использую: <код> driver.manage().timeouts().implicitlyWait(180, TimeUnit.SECONDS); Но он все еще непрерывно не работает для нижеизведанного элемента ...

0  Jframe + Canvas: почему я получаю NullPointerException при звонке Glviewport?  ( Jframe canvas why do i get a nullpointerexception when calling glviewport ) 
Я создал JFrame с холстом в нем, как вы можете видеть в коде ниже. То, что я пытаюсь сделать, это сделать контекст OpenGL, когда размер экрана обновляется. Эт...

0  Общее утверждение для ошибки recuralandom return - Java  ( General statement for securerandom return error java ) 
Я искал на протяжении разных форумов, и теперь я наконец-то ставит свой вопрос, так как я не могу найти конкретный ответ. Я пишу протокол безопасности для д...

4  Как полностью квалифицировать класс, имя пакета которого сталкивается с местным именем члена?  ( How to fully qualify a class whose package name collides with a local member nam ) 
ОК, вот очень любопытная языковая головоломка Java 7 для специалистов JLS там. Следующий кусок кода не скомпилируется, ни с Javac, ни с Eclipse: <код> ...

2  Javafx Treeview клеточная фабрика с гридпаном  ( Javafx treeview cell factory with gridpane ) 
У меня есть <код> TreeView<GridPane> и <код> GridPane содержит несколько узлов, таких как кнопки и метки. Количество узлов внутри <Код> GridPane варьируетс...

1  Улучшение моего жадного алгоритма  ( Improving my greedy algorithm ) 
** Это мой код, который выглядит способ найти сумму в массиве ** <код> public class Piecedemonei { public static void recherche(int[] tab) { ...

-2  В классе F250.java есть две петли, которые не будут работать  ( There are two loops in the f250 java class that wont run ) 
Класс F250.java - это объект оружия, и есть два метода, которые привлекают и обновляют пули, выходящие из пистолета. Я сделал класс пули и сделал массив пули ...

Связанный проблема

1  Могу ли я нажать на свой собственный объект пользователя в Security SecurityContext? 
1  Обратитесь к веб-странице внутри файла JAR 
1  Кварц Schdeuler для нескольких проектов в JBOSS 5 
0  Строка заменить приключение в Java 
1  Простое Javaee HTML Get / Post Application 
1  Android ListView с некоторыми показанными элементами и показывать больше кнопки 
1  Как увеличить предел параллельного соединения OpenFire? 
49  Как извлечь строку между двумя разграничителями [дубликат] 
56  Когда использовать явное ожидание против неявного ожидания в Webdriver Selenium? 
0  Jframe + Canvas: почему я получаю NullPointerException при звонке Glviewport? 
0  Общее утверждение для ошибки recuralandom return - Java 
4  Как полностью квалифицировать класс, имя пакета которого сталкивается с местным именем члена? 
2  Javafx Treeview клеточная фабрика с гридпаном 
1  Улучшение моего жадного алгоритма 
-2  В классе F250.java есть две петли, которые не будут работать 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.