如何将常规数组转换为二维锯齿状数组?

时间:2013-11-18 00:23:59

标签: java arrays

我有一个String数组

String myArray [] = {"user1", "doc2", "doc5", "user2", "doc3", "doc6", "doc8", "user3", "doc 10" }

意思是user1doc2doc5 ... user3只有doc10

我想将这个数组转换为二维锯齿状的

String myArray2 [] [] = { {"user1", "doc2", "doc5"} , {"user2", "doc3", "doc6", "doc8"} , {"user3", "doc 10"} }

我怎样才能最有效地做到这一点? (我有一个逻辑,通过遇到一个具有子串“user”的元素并创建一个新的jagged数组元素。但我相信我的算法远非最有效的一个)

2 个答案:

答案 0 :(得分:2)

一些事情:

首先,听起来你已经有了一个有效的算法。问题是什么?在这种情况下,没有“最有效”。只有有效(产生正确的结果),并且无效(产生不正确的结果)。您已经创建了一个满足您要求的算法。你完成了。

其次,“最有效率”是什么意思?您的具体性能要求是否未得到满足?如果没有,请分析,识别瓶颈并在那里进行优化。代码的这一部分是否会使软件速度变慢,以至于改进会很明显?如果没有,您的性能要求就会得到满足,而且您已经完成了。

或者,通过“最有效”,你的意思是“减少代码行”?为什么?你的代码清楚了吗?是否易于维护,读者可以轻松看到其意图是什么?如果没有,请考虑添加描述性注释。如果是这样,那么你就没有任何好处,而且你已经完成了。

如果您的算法的行为不符合预期,那么您可以发布您的特定问题,以及您的实际和预期输出的差异。但是,听起来你在这里根本没有任何问题。我建议继续进行下一个开发任务。

所有这一切,你做的方式是合理的。您的任务基本上是解析令牌。遍历数组,查找用户字符串,将以下值与该用户关联,存储数据。你无能为力。

答案 1 :(得分:1)

你可以做很少的事情来提高效率:你需要创建所有进入锯齿状阵列的数组,你还需要进行所有的复制。这里没有机会节省大量的CPU时间。

您可以通过首先计算结果将包含多少个数组元素,创建结果数组,然后再次从头开始扫描数组以查找"userX"的下一个位置,并调用{ {3}}将元素复制到输出数组的子数组中。