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数组装换。。。如下的主要内容,如果未能解决你的问题,请参考以下文章
华为OD机试真题 Java 实现组装新的数组2023 Q1 | 200分
华为OD机试真题 Java 实现组装新的数组2023 Q1 | 200分