java数组装换。。。如下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java数组装换。。。如下相关的知识,希望对你有一定的参考价值。

["a":1,"b":3,"c":5,"a":1,"b":7,"c",9,"a":2,"b":2,"c":3,"a":1,"b":2,"c":3,"a":2,"b":4,"c":5]
将"a",1相同的map放在一个数组中
==>["one",["a":1,"b":3,"c":5,"a":1,"b":2,"c":3,"a":1,"b":7,"c":9],'two',["a":2,"b":2,"c":3,"a":2,"b":4,"c":5]]

这个可以使用for循环加上java的Map集合来做, 代码冗长,扩展性差,不推荐!!

推荐使用 阿里的fastjson.jar包 或者gson来处理 ;因为你提供的数据都是JSON格式的数据

以fastjson为例,参考代码如下

//使用fastjson包
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class Test 

public static void main(String[] args) 
//json字符串
String jsonStr = "['a':1,'b':3,'c':5,'a':1,'b':7,'c':9,'a':2,'b':2,'c':3,'a':1,'b':2,'c':3,'a':2,'b':4,'c':5]";
JSONArray objects = JSON.parseArray(jsonStr);//字符串-->json数组
JSONArray oneAry=new JSONArray();//json数组
JSONArray twoAry=new JSONArray();//json数组
for (int i = 0; i < objects.size(); i++) 
JSONObject obj = (JSONObject) objects.get(i);
int avlue = (int) obj.get("a");//获取a的值
if(avlue==1)//如果是1,那么存入数组1
oneAry.add(obj);
else if(avlue==2)
twoAry.add(obj);


JSONObject one=new JSONObject();
one.put("one", oneAry);//存入到json对象
JSONObject two=new JSONObject();
two.put("two", twoAry);

System.out.println(one);
System.out.println(two);

参考技术A

你好!

public static void main(String[] args) 
    //定义一个映射关系
    HashMap<String, String> params = new HashMap<String, String>();
    params.put("1", "one");
    params.put("2", "two");
    
    //为不同的键初始化数组
    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("one", new JSONArray());
    map.put("two", new JSONArray());
        
    //解析json字符串,转为json数组
    String jsonStr = "[\\"a\\":1,\\"b\\":3,\\"c\\":5,\\"a\\":1,\\"b\\":7,\\"c\\":9,\\"a\\":2,\\"b\\":2,\\"c\\":3,\\"a\\":1,\\"b\\":2,\\"c\\":3,\\"a\\":2,\\"b\\":4,\\"c\\":5]";
    JSONArray jsonArray = JSONArray.parseArray(jsonStr);
    
    //循环处理
    for (Object object : jsonArray) 
        JSONObject json = (JSONObject)object;
        //得到每个元素的a的属性值
        String key = json.getString("a");
        //params.get(key)获取映射关系,返回对应数组的键值
        //根据键值获取对应的数组
        //将当前对象存入对应的数组
        JSONArray arrInMap = (JSONArray)map.get(params.get(key));
        arrInMap.add(json);
    

希望对你有帮助!

参考技术B 定义2个数组呗,判断map的"a",1是不是相同的,相同的话放在一个数组里面。以此类推。 参考技术C <style>
        html,
        body 
            height: 100%;
            margin: 0;
            padding: 0;
        

        .bgRed 
            background: red;
        
    </style>
</head>

<body>
    <a href="">aaaa</a>
</body>
<script>
    document.querySelector("a").onmouseover = () => 
        document.querySelector("body").classList.add("bgRed")
    
    document.querySelector("a").onmouseout = () => 
        document.querySelector("body").classList.remove("bgRed")
    
</script>

参考技术D     /**
     * 
    * @Description= TODO(将源集合转换成目标集合:将源集合中"a"=值相同的map放在一个数组中)
    * @oldList= 源集合    ["a"=1,"b"=3,"c"=5,"a"=1,"b"=7,"c",9,"a"=2,"b"=2,"c"=3,"a"=1,"b"=2,"c"=3,"a"=2,"b"=4,"c"=5]
* @return newListout 目标集合["one"=["a"=1,"b"=3,"c"=5,"a"=1,"b"=2,"c"=3,"a"=1,"b"=7,"c"=9],'two'=["a"=2,"b"=2,"c"=3,"a"=2,"b"=4,"c"=5]]
     */
    public static List<Map<String, Object>> listMapTypeConvert()    
     List<Map<String,Object>> oldList=Init_Complex_List_Map_Obj.initListMapObj2();//源集合。初始化并赋值为有序集合[a=1, b=3, c=5, a=1, b=7, c=9, a=2, b=2, c=3, a=1, b=2, c=3, a=2, b=4, c=5]    
     List<Map<String,Object>> newListout=new ArrayList<Map<String,Object>>();//目标集合
     String[] sArr=new String[]"zero","one","two","three";
List<Integer> iList=new ArrayList<Integer>();//用于存放已比较过的"a":1,去重
for(int i=0;i<oldList.size();i++)
Map<String,Object> map1=new HashMap<String,Object>();
List<Map<String,Object>> newListin=new ArrayList<Map<String,Object>>();
int aiVal= (Integer) oldList.get(i).get("a");
String a=sArr[aiVal];
if(iList==null ||iList.size()==0 || !iList.contains(aiVal))
newListin.add(oldList.get(i));
else
continue;

for(int j=i+1;j<oldList.size();j++)
int ajVal= (Integer) oldList.get(j).get("a");
if(aiVal==ajVal)
iList.add(ajVal);
newListin.add(oldList.get(j));


map1.put(a, newListin);
newListout.add(map1);

return newListout;//[one=[a=1, b=3, c=5, a=1, b=7, c=9, a=1, b=2, c=3], two=[a=2, b=2, c=3, a=2, b=4, c=5]]
    

以上是关于java数组装换。。。如下的主要内容,如果未能解决你的问题,请参考以下文章

java怎么组装多层嵌套json

华为OD机试真题 Java 实现组装新的数组2023 Q1 | 200分

华为OD机试真题 Java 实现组装新的数组2023 Q1 | 200分

华为OD机试 - 组装新的数组(Java & JS & Python)

0524泰山版java开发手册

0524泰山版java开发手册