有没有更好二维数组循环方法?求指点。

榨菜大叔@ 2012-03-19 05:25:49
String[][] str = new String[5][5];
str[0][0]= "000";
str[0][1]= "111";
str[0][2]= "222";
str[0][3]= "333";
str[0][4]= "444";
str[1][0]= "555";
str[1][1]= "666";
str[1][2]= "777";
str[1][3]= "888";
str[1][4]= "999";
for (int i = 0; i < str.length; i++)
{
for (int j = 0; j< str.length; j++)
{
if(null != str[i][j])
{
System.out.println("["+i+"]" +"["+ j+"]");
System.out.println("["+str[i][j]+"]");
}
}
}
...全文
135 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
榨菜大叔@ 2012-03-20
  • 打赏
  • 举报
回复
RE:5L, 因为现在做的东西返回值是个二维数组,因为数据量相对较大,所有我就随手写了一个循环去取;

我也没有更好方法,就随手写了一个直观代码去实现。

java的二维数组其实我几乎没有用过,只是看到之后会用罢了。不过还是非常感谢。
Alexander 2012-03-19
  • 打赏
  • 举报
回复
LZ要求的“好”的标准是什么?如果单纯考虑算法复杂度可以这样写:

String[][] str = new String[5][5];
str[0][0] = "000";
str[0][1] = "111";
str[0][2] = "222";
str[0][3] = "333";
str[0][4] = "444";
str[1][0] = "555";
str[1][1] = "666";
str[1][2] = "777";
str[1][3] = "888";
str[1][4] = "999";
for (int i = 0; i < 25; i++)
if (str[i / 5][i % 5] != null) {
System.out.println("[" + i / 5 + "][" + i % 5 + "]");
System.out.println("[" + str[i / 5][i % 5] + "]");
}

另外,Java实质上没有多维数组,建议LZ不要纠结这个问题,以免捡了芝麻丢了西瓜。
mzzandlss 2012-03-19
  • 打赏
  • 举报
回复
用for的加强版迭代
水之沐霓 2012-03-19
  • 打赏
  • 举报
回复
有循环用就不错了....
creso 2012-03-19
  • 打赏
  • 举报
回复
效率方面是没法提高了。。除非在C里用while循环效率高点

循环部分可以用foreach代码比较整洁
for (String[] strings : str) {
for (String string : strings) {
System.out.println(string);
}
}
MiceRice 2012-03-19
  • 打赏
  • 举报
回复
对于二维数组来说就没有了,除非你用稀疏矩阵。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧