如何创建包含ArrayList的二维数组?比如:
ArrayList
可以做以下事情吗:
我需要比较一些人物的位置和我地图上建筑物的位置。几个建筑可以属于同一块瓷砖,但一个可以画在人物前面,另一个可以画在人物后面。在游戏中,每一个角色都必须进行这种比较。
每次角色从一个磁贴移动到另一个磁贴时,我都会尝试更新一个字符数组。然后,渲染方法应该查找特定瓷砖中有多少个字符(如果有的话),并在该瓷砖中的字符上循环,以便在建筑物的前面或后面绘制它们。
比如:
//init
ArrayList<Character>[][] arrayOfCharacters = new ArrayList<Character>[][];
//each tile in the map
for (int y = 0; y < 9; y++){
for(int x = 9-1; x >= 0; x--){
if ( arrayOfCharacters[y][x].length > 0 ){
for ( int i=0, i< arrayOfCharacters[y][x].length; i++ ){
//compare which building is in front or behind the characters
//then
characterInThisTile = index of each character in arrayOfCharacters[y][x]
spriteBatch.draw(characterInThisTile, x_pos, y_pos, tileWidth, tileHeight);
}
}
}
}
您可以创建一个类,然后使用存储ArrayList的类创建对象
首先创建一个具有实例变量
ArrayList的类
//Make Objects that will have an ArrayList<Character>
public class ArrayOfChars {
private ArrayList<Character> list;
//Constructor
public arrayOfChars(){
this.list = new ArrayList<Character>();
}
//Getter
public ArrayList<Character> getList(){
return this.list;
}
//Setter
public void setList(ArrayList<Character> list){
this.list = list;
}
}
现在,您可以使用这个类来创建对象,并将这些对象存储在二维数组中。这些对象可以存储和
ArrayList
public static void main(String[] args) {
ArrayOfChars[][] myLists = new ArrayOfChars[9][9];
//initialize the 2d array so that it is filled with Empty ArrayList<>'s'
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
ArrayOfChars thislist = new ArrayOfChars();
myLists[i][j] = thislist;
}
}
//You can now use it like a 2d array of objects
这里有一些方法可以使用
ArrayList的
2D-Array
//Iterate like this
for (int row = 0; row < 9; row++) {
for (int col = 0; col < 9; col++) {
myLists[row][col].getList().get(index);
//or
myLists[row][col].setList(list);
}
}
//Add to a list
myLists[2][5].getList().add(new Character('H'));
//Set a list of characters
ArrayList<Character> useThisList = new ArrayList<Character>();
useThisList.add('F');
useThisList.add('G');
useThisList.add('L');
myLists[3][7].setList(useThisList);
}
二维数组是一个数组的数组——它意味着结构看起来像:
[0,0][0,1][0,2][0,3] -> sub array 1
[1,0][1,1][1,2] -> sub array 2
[2,0][2,1][2,2][2,3][2,4] - sub array 3
请注意,每个子数组中的元素数不必相同。您可以将上述数组创建为(我使用的是整数,您的类型会根据需要而变化):
int[][] a = new int[3][]; // The number of sub arrays or the first argument should be defined.
// The number of elements in each sub array need not be known at compile time though
因此,如果必须对ArrayList做同样的事情,数组中的数组将转换为列表中的列表。所以你可以做这样的事情:
ArrayList<ArrayList<Integer>> arrayList = new ArrayList<ArrayList<Integer>>();
由于ArrayList对象可以动态扩展,其结构类似于:
Row [0] -> [0][1][2]..... // and so on
Row [1] -> [0][1][2]..... // and so on
Row [2] -> [0][1][2]..... // and so on
使用嵌套for循环将元素输入到该循环中的方式非常类似。
ArrayList<Character>[][] arrayOfCharacters = new ArrayList[9][9];
for(int i=0;i<arrayOfCharacters.length;i++){
for(int i2=0;i2<arrayOfCharacters[i].length;i2++){
arrayOfCharacters[i][i2]=new ArrayList<Character>(20);
}
}
我有一个小程序,在2D数组中保存状态对和它们的首都。在此程序下面: 我需要用替换常规的二维数组。 我在stackoverflow上找到了一些线程,如何添加我想要的数组。以下是链接:如何在Java中创建二维ArrayList?以及如何声明2D字符串ArrayList?。但是这些讨论并没有解释如何在每个ArrayList中添加元素。我能做的最好的事情是创建新的ArrayList,然后添加一些元素,最后
我正在创建一个Android应用程序,为了使其工作,我需要动态创建一个多维(2D): 我把代码留给您,以便让您理解它是如何被排序的,这样您就可以清除它来添加这个特性(可能我不仅想要代码本身的装饰,还想要对其中的内容有一个几乎详细的解释,我会非常感谢的! http://imgur.com/a/ajyoe
问题内容: 我一直在网上阅读,有些地方说这是不可能的,有些地方说是不可能,然后举一个例子,其他人则反驳该例子,等等。 如何在JavaScript中声明二维数组?(假设有可能) 我将如何访问其成员?(或?) 问题答案:
问题内容: 无论如何,我对ArrayLists还是很陌生,但是我在这个项目中需要它们,如果你们能帮助我,我将不胜感激! 基本上,我需要创建一个多维数组列表来保存字符串值。我知道如何使用标准数组来执行此操作,但是这样做并不好,因为我不知道数组的大小,我所知道的只是它会有多少个尺寸。 因此,如果你们知道如何制作“具有2 / +尺寸的可动态调整大小的数组”,请告诉我。 在此先感谢, 安迪 编辑/更新 也
问题内容: 我从使用方法获得像素。像素存储在名为的数组中。在对数据数组进行一些操作之后,我需要再次创建一个,以便可以将其传递到一个模块,该模块将显示来自此数据数组的修改后的图像,但我对此感到困惑。 问题答案: 然后再次设置像素。 PS:如评论中所述,请使用@TacticalCoder的答案
问题内容: 我看到了一个问题:从数组创建ArrayList 但是,当我使用以下代码尝试该解决方案时,它并不能在所有情况下都有效: 我在这里做错了什么?代码不应该编译就好吗? 问题答案: 问题在 是,被认为是一个单一的,因为基本数组从延伸实例。如果你有这样的工作,而不是因为现在你要发送的数组。 根据您的评论:如果您仍然想使用一个(或另一个原始类型的数组)作为主要数据,那么您需要使用wrapper类创