java怎么去除JSON数组的重复值

java怎么去除JSON数组的重复值,第1张

对最佳回答进行修改,假设原始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.Arrays

import 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])

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9257715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存