对最佳回答进行修改,假设原始Json数组是这样的
原始JSONArry:[{"Value":"15153129877","Key":"09770985-9869-11e7-9c0d-fa163ef28f43"},{"Value":"15153129877","Key":"09770985-9869-11e7-9c0d-fa163ef28f43"}]
工具类如下:
/*** 根据Key去重复
* @param array
*/
public static JSONArray delRepeatIndexid(JSONArray array) {
JSONArray arrayTemp = new JSONArray()
int num = 0
for(int i = 0i < array.size()i++){
if(num==0){
arrayTemp.add(array.get(i))
}else{
int numJ = 0
for(int j = 0j < arrayTemp.size() j++){
JSONObject newJsonObjectI = (JSONObject)array.get(i)
JSONObject newJsonObjectJ = (JSONObject)arrayTemp.get(j)
String index_idI = newJsonObjectI.get("Key").toString()
String valueI = newJsonObjectI.get("Value").toString()
String index_idJ = newJsonObjectJ.get("Key").toString()
if(index_idI.equals(index_idJ)){
arrayTemp.remove(j)
JSONObject newObject = new JSONObject()
newObject.put("Key", index_idI)
newObject.put("Value", valueI)
arrayTemp.add(newObject)
break
}
numJ++
}
if(numJ-1 == arrayTemp.size()-1){
arrayTemp.add(array.get(i))
}
}
num++
}
return arrayTemp
}
处理结果
数据处理后JSONArry:[{"Value":"15153129877","Key":"09770985-9869-11e7-9c0d-fa163ef28f43"}]
完毕!!!!
java数组中去掉重复数据可以使用set集合,set本身内部是不保存重复的数据的,如下代码:
import java.util.Arraysimport java.util.Set
import java.util.TreeSet
public class ceshi {
public static void main(String[] args) {
int[] testArr = { 5, 5, 1, 2, 3, 6, -7, 8, 6, 45, 5 }//新建一个int类型数组
System.out.println(Arrays.toString(testArr))
Set<Integer> set = new TreeSet<Integer>()//新建一个set集合
for (int i : testArr) {
set.add(i)
}
Integer[] arr2 = set.toArray(new Integer[0])
// 数组的包装类型不能转 只能自己转;吧Integer转为为int数组;
int[] result = new int[arr2.length]
for (int i = 0 i < result.length i++) {
result[i] = arr2[i]
}
System.out.println(Arrays.toString(arr2))
}
}
运行结果如下:
计数方法,你在遍历数组外边int 一个数=0,如果某个数和数组【i】相等,就++删除方法我用的是笨方法,因为数组不能直接增删 *** 作,要先算出新数组的长度,在遍历出去,我是取巧了先排序了,当然你也可以用其他排序方法排序
public static void main(String[] args) {
int [] arr={1,2,2,3,4,5}
int len=arr.length
Arrays.sort(arr)
int leng=0
for( int i=0i<arr.length-1i++){
if(arr[i]!=arr[i+1]){
leng++
}
}
if(arr[arr.length-2]!=arr[arr.length-1]){
leng++
}
System.out.println(leng)
int newlength=0
int []newArr=new int[leng]
for( int i=0i<arr.length-1i++){
if(arr[i]!=arr[i+1]){
newArr[newlength]=arr[i]
newlength++
}
}
if(arr[arr.length-2]!=arr[arr.length-1]){
newArr[newlength]=arr[arr.length-1]
}
for(int i=0i<newArr.lengthi++){
System.out.println(newArr[i])
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)