我有一个String数组
String myArray [] = {"user1", "doc2", "doc5", "user2", "doc3", "doc6", "doc8", "user3", "doc 10" }
意思是user1
有doc2
和doc5
... user3
只有doc10
等
我想将这个数组转换为二维锯齿状的
String myArray2 [] [] = { {"user1", "doc2", "doc5"} , {"user2", "doc3", "doc6", "doc8"} , {"user3", "doc 10"} }
我怎样才能最有效地做到这一点? (我有一个逻辑,通过遇到一个具有子串“user”的元素并创建一个新的jagged数组元素。但我相信我的算法远非最有效的一个)
答案 0 :(得分:2)
一些事情:
首先,听起来你已经有了一个有效的算法。问题是什么?在这种情况下,没有“最有效”。只有有效(产生正确的结果),并且无效(产生不正确的结果)。您已经创建了一个满足您要求的算法。你完成了。
其次,“最有效率”是什么意思?您的具体性能要求是否未得到满足?如果没有,请分析,识别瓶颈并在那里进行优化。代码的这一部分是否会使软件速度变慢,以至于改进会很明显?如果没有,您的性能要求就会得到满足,而且您已经完成了。
或者,通过“最有效”,你的意思是“减少代码行”?为什么?你的代码清楚了吗?是否易于维护,读者可以轻松看到其意图是什么?如果没有,请考虑添加描述性注释。如果是这样,那么你就没有任何好处,而且你已经完成了。
如果您的算法的行为不符合预期,那么您可以发布您的特定问题,以及您的实际和预期输出的差异。但是,听起来你在这里根本没有任何问题。我建议继续进行下一个开发任务。
所有这一切,你做的方式是合理的。您的任务基本上是解析令牌。遍历数组,查找用户字符串,将以下值与该用户关联,存储数据。你无能为力。
答案 1 :(得分:1)
你可以做很少的事情来提高效率:你需要创建所有进入锯齿状阵列的数组,你还需要进行所有的复制。这里没有机会节省大量的CPU时间。
您可以通过首先计算结果将包含多少个数组元素,创建结果数组,然后再次从头开始扫描数组以查找"userX"
的下一个位置,并调用{ {3}}将元素复制到输出数组的子数组中。