web-dev-qa-db-ja.com

プログラムで2次元配列に値を挿入する方法は?

これをJavaで動的に行いたいです。私は一次元配列に値を挿入する方法を知っています。二次元配列で少し混乱しています。

static final String shades[][] = {


 // Shades of grey
  {
    "lightgrey", 
    "dimgray", 
    "sgi gray 92", 
  },
 // Shades of blue
  {
    "dodgerblue 2", 
    "steelblue 2", 
    "powderblue", 
  },
// Shades of yellow
  {
    "yellow 1",
    "gold 1",
    "darkgoldenrod 1", 
  },
 // Shades of red
  {
    "indianred 1", 
    "firebrick 1", 
    "maroon", 
  }
};
8
vinothp
String[][] shades = new String[intSize][intSize];
 // print array in rectangular form
 for (int r=0; r<shades.length; r++) {
     for (int c=0; c<shades[r].length; c++) {
         shades[r][c]="hello";//your value
     }
 }

以下のコードを試してください、

String[][] shades = new String[4][3];
for(int i = 0; i < 4; i++)
{
  for(int y = 0; y < 3; y++)
  {
    shades[i][y] = value;
  }
}
5
mariomario

配列の長さは不変であるため、配列に値を「追加」することはできません。特定の配列位置に値を設定できます。

1次元配列でそれを行う方法を知っている場合は、n次元配列でそれを行う方法を知っています。Javaにはn次元配列はなく、配列の配列(配列...)のみです。

ただし、配列要素にアクセスするためにインデックス演算子をチェーンすることはできます。

String[][] x = new String[2][];
x[0] = new String[1];
x[1] = new String[2];

x[0][0] = "a1";
    // No x[0][1] available
x[1][0] = "b1";
x[1][1] = "b2";

子配列の次元は一致する必要がないことに注意してください。

処理する必要のある要素の数が事前にわからない場合は、代わりにコレクションを使用する方が良いソリューションかもしれません( https://en.wikipedia.org/wiki/Java_collections_framework )。新しい大きな2次元配列を作成し、古いデータをコピーしてそこに新しいアイテムを挿入することもできますが、コレクションフレームワークはこれを自動的に処理します。

この場合、文字列のマップを文字列のリストに使用できます。

import Java.util.ArrayList;
import Java.util.HashMap;
import Java.util.List;
import Java.util.Map;

public class MyClass {
    public static void main(String args[]) {
        Map<String, List<String>> shades = new HashMap<>();

        ArrayList<String> shadesOfGrey = new ArrayList<>();
        shadesOfGrey.add("lightgrey");
        shadesOfGrey.add("dimgray");
        shadesOfGrey.add("sgi gray 92");

        ArrayList<String> shadesOfBlue = new ArrayList<>();
        shadesOfBlue.add("dodgerblue 2");
        shadesOfBlue.add("steelblue 2");
        shadesOfBlue.add("powderblue");

        ArrayList<String> shadesOfYellow = new ArrayList<>();
        shadesOfYellow.add("yellow 1");
        shadesOfYellow.add("gold 1");
        shadesOfYellow.add("darkgoldenrod 1");

        ArrayList<String> shadesOfRed = new ArrayList<>();
        shadesOfRed.add("indianred 1");
        shadesOfRed.add("firebrick 1");
        shadesOfRed.add("maroon 1");

        shades.put("greys", shadesOfGrey);
        shades.put("blues", shadesOfBlue);
        shades.put("yellows", shadesOfYellow);
        shades.put("reds", shadesOfRed);

        System.out.println(shades.get("greys").get(0)); // prints "lightgrey"
    }
}
0
Hemaolle

配列の配列と考えてください。

このstr [x] [y]を実行すると、各要素に順に長さyの配列が含まれる長さxの配列があります。 Java 2番目の次元が同じ長さである必要はありません。したがって、x = iの場合はy = mとx = jの場合はy = nを使用できます

このため、宣言は次のようになります

String [] [] test = new String [4] []; test [0] = new String [3]; test [1] = new String [2];

等..

0
ejb_guy