在Java中的2D数组中的指定位置插入元素或删除元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Java中的2D数组中的指定位置插入元素或删除元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2300字,纯文字阅读大概需要4分钟。
内容图文
![在Java中的2D数组中的指定位置插入元素或删除元素](/upload/InfoBanner/zyjiaocheng/668/317c61ddb00c456998345393a47067b8.jpg)
我有一个可变行和列数的二维数组.数组作为JSON存储在数据库中.我有一个要求在用户指定的某些元素之后添加给定元素或删除用户指定的元素.数组中的每个元素都是唯一的.样本json值看起来像[[4,5],[3,1,6,7],[34,21,55]].考虑一种情况,我想在元素7之后添加2个元素12,13,结果数组看起来像[[4,5],[3,1,6,7,12,13],[34,21,55] ].并删除如果我给定1作为输入,结果应为[[4,5],[3,6,7,12,13],[34,21,55]].使用Gson,我解析了存储的json值到一个数组.如何用更少的时间复杂性在Java中实现它.
我从数据库解析JSON数据的代码如下所示
Gson gson = new GsonBuilder().create();
if (myTemplate.getQuestionOrder() != null) {
long[][] questionOrder = gson.fromJson(myTemplate.getQuestionOrder(), long[][].class);
}
解决方法:
请尝试以下方法.
private static void insertAfter(long[][] array, int value, long[] insertion) {
boolean found = false;
for (int i = 0; i < array.length; i++) {
long[] sub = array[i];
for (int j = 0; j < sub.length; j++) {
if (sub[j] == value) {
long[] newSub = new long[sub.length + insertion.length];
System.arraycopy(sub, 0, newSub, 0, j + 1);
System.arraycopy(insertion, 0, newSub, j + 1, insertion.length);
System.arraycopy(sub, j + 1, newSub, j + 1 + insertion.length, sub.length - j - 1);
array[i] = newSub;
found = true;
break;
}
}
if (found) break;
}
}
用法示例:
insertAfter(questionOrder, 7, new long[]{12, 13});
System.out.println(gson.toJson(questionOrder));
这将打印[[4,5],[3,1,6,7,12,13],[34,21,55]]
要删除元素,可以使用类似但略有修改的逻辑:
private static long[][] remove(long[][] array, int value) {
boolean found = false;
int emptyIndex = -1;
for (int i = 0; i < array.length; i++) {
long[] sub = array[i];
for (int j = 0; j < sub.length; j++) {
if (sub[j] == value) {
long[] newSub = new long[sub.length - 1];
System.arraycopy(sub, 0, newSub, 0, j);
System.arraycopy(sub, j + 1, newSub, j, sub.length - j - 1);
array[i] = newSub;
if (array[i].length == 0) emptyIndex = i;
found = true;
break;
}
}
if (found) break;
}
if (emptyIndex >= 0) {
long[][] newArray = new long[array.length - 1][];
System.arraycopy(array, 0, newArray, 0, emptyIndex);
System.arraycopy(array, emptyIndex + 1, newArray, emptyIndex, array.length - emptyIndex - 1);
array = newArray;
}
return array.length == 0 ? null : array;
}
此方法将从内部数组中删除给定的项目,如果内部数组为空,则将其从外部数组中删除.它返回修改后的数组;如果为空,则返回null.
用法示例:
questionOrder = remove(questionOrder, 4);
内容总结
以上是互联网集市为您收集整理的在Java中的2D数组中的指定位置插入元素或删除元素全部内容,希望文章能够帮你解决在Java中的2D数组中的指定位置插入元素或删除元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。