问题: list的多个对象 存在key一致 但value不一致 想把list的多个对象的唯一的key和重复的value归类在一起 转变成 hashMap key是唯一 value:重复的数据变成单独的list:
例如:原始数据:
转变成这样:
先说下逻辑:1: 创建一个对象 声明一个string的name 和一个list的ids
2: 然后在创建一个
hashMap=HashMap<String, List<String>>这样的hashMap 和一个用来存放NetWorkIdBean对象的list netWorkBean=arrayListOf<NetWorkIdBean>()
3: 开始判断逻辑: 
完整代码:
var network = NetWorkManager()
network!!.getAsync(
url,
projectId,
header,
object : ResultCallback<Response>() {
override fun onError(request: Request, exception: Exception) {
}
override fun onResponse(response: String) {
var jsobj = Gson().fromJson(response, JsonsRootBean::class.java)
val status = jsobj.code
val data = jsobj.data
val Adomb = data?.Admob
val MAX = data?.Max
if (status != 200) {
return
}
if (Adomb != null) {
KVUtils.get()?.putLong("ad_use_max", 0L)
// 筛选后数据 list对象
var netWorkBean = arrayListOf<NetWorkIdBean>()
//new string 的name 和list的ids
val hashMap = HashMap<String, List<String>>();
//遍历服务端下发的list对象
for ((index, stu) in Adomb.withIndex()) {
println(" $index ${stu.ad_attr} ${stu.unit_id}")
//判断hashmap是否包含key
if (hashMap.containsKey(stu.ad_attr)) {
// 如果包含 id合并
println("已包含 ${stu.ad_attr}")
val arrayList = hashMap.get(stu.ad_attr) as ArrayList<String>
//存到hashMap相对于的key的value下
arrayList.add(stu.unit_id!!)
} else {
//如果不包含 那么就把id进行归类到一个list里
println("添加 ${stu.ad_attr} ${stu.unit_id} ")
//归类ids
var idd = arrayListOf<String>()
idd.add(stu.unit_id!!)
//把合并的ids存放到hashMap里
hashMap.put(stu.ad_attr!!, idd)
var nstu =
NetWorkIdBean()
nstu.name = stu.ad_attr
nstu.ids = idd
//把对应的name和ids存放到整个大的NetWorkIdBean对象中
netWorkBean.add(nstu)
}
}}
最后打印:
总结:简单来说就是直接往hashMap存放name和id 然后再判断hashMap是否有这个name 有的话直接获取通过name 就是key获取当前list 然后对应的放进去id就可以了
欢迎大家指点 询问
这篇博客介绍了如何将包含重复key但value不同的list转换为hashMap,使得key唯一,value为对应的重复数据list。通过创建自定义对象,利用HashMap的特性,遍历list并检查HashMap中是否存在相同key,若存在则将value添加到对应的list中,最终实现数据归类。
1060

被折叠的 条评论
为什么被折叠?



