2 qq 35058792 qq_35058792 于 2016.09.23 12:47 提问

Map和list一起用的问题

Map<String, Boolean> map = new HashMap<>();
map.put("0", true);
map.put("1", true);
map.put("2", true);
map.put("3", false);

List<String> list = new ArrayList<>();
list.add("红色");
list.add("蓝色");
list.add("绿色");
list.add("紫色");


                            Map里面键 对应这 list里面的下标  true的时候让list里面对应的下标删除  怎么 写啊 求求大神救救我吧 我都纠结两天了

8个回答

A01014170
A01014170   2016.09.23 15:58
已采纳

看看我的代码有没有解决你的问题。


    public static void main(String[] args) {
        Map<String, Boolean> map = new HashMap<String, Boolean>();
        map.put("0", true);
        map.put("1", true);
        map.put("2", true);
        map.put("3", false);

        List<String> list = new ArrayList<String>();
        list.add("红色");
        list.add("蓝色");
        list.add("绿色");
        list.add("紫色");

        List<String> list1 = new ArrayList<String>();
        Map<String, String> map1 = new HashMap<String, String>();
        for(int i=0;i<map.size();i++){
            if(map.get(i+"")){
                map1.put(""+i, ""+i);
                list1.add(list.get(i));
            }
        };
        list.removeAll(list1);
        for(int i=0;i<map1.size();i++){
            map.remove(map1.get(""+i));
        }

        System.err.println(map.toString());
        System.err.println(list.toString());
    }

Veggiel
Veggiel   2016.09.23 13:29

你这样设计是不合理的如果map的键对应list的下标,那么list.remove()方法会让list的size()减小,这样第一次删除list里面一个数据之后list.size()就会-1,这样map中的键和list的下标就不能一一对应了

ling_xiaoyan
ling_xiaoyan 回复Veggiel: 换个思路,倒序遍历list就可以解决啦
接近 2 年之前 回复
Veggiel
Veggiel 回复ridish: 我在5楼重新解答了
接近 2 年之前 回复
ridish
ridish 恩,没错?
接近 2 年之前 回复
qq_35058792
qq_35058792 刚开始的时候是对应的 之后不对应没有关系
接近 2 年之前 回复
yue369
yue369   2016.09.23 13:35

for(int i=0;i<list.size();i++){
if(map.containsKey(i+"") && StringUtils.equals(map.get(i+"").toString(), "true")){
list.remove(i);
}
}

    for(String s:list){
        System.out.println(s);
    }
cmmchenmm
cmmchenmm   2016.09.23 13:34

可以考虑用list集合存放boolen值当值是true时两个list集合一起删除就可以防止楼上说的那种情况

或者是在list集合内放置map就一起解决了

yue369
yue369   2016.09.23 13:42

新添加到一个list 不就好了 原本不动
List list1 = new ArrayList<>();
for(int i=0;i<list.size();i++){
if(map.containsKey(i+"") && StringUtils.equals(map.get(i+"").toString(), "false")){
list1.add(list.get(i));
}
}

    for(String s:list1){
        System.out.println(s);
    }

Veggiel
Veggiel   2016.09.23 14:04

如果你非要那么倔强的话 你这么干

 int listSize = list.size();
    int len = 0;
    for(int i=0;i<listSize;i++){
        if(map.containsKey(i+"") && "true".equals(map.get(i+"").toString())){
        list.remove(i-len);
        len++;
        }
        }
    System.out.println(list);
strutce
strutce   Ds   Rxr 2016.09.23 15:53

把map设置的key值与list添加的值一样
map.get(map.containsKey(list.get(i)))==true 就删除

ling_xiaoyan
ling_xiaoyan   2016.09.24 10:57

倒序遍历list即可解决问题

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
json学习初体验--使用第三方的jar包实现bean、List、map创建json格式
1、需要的jar包json-lib.jar       下载地址:       http://sourceforge.net/projects/json-lib/files/json-lib/       此包还需要以下的依赖包,       2、创建javabean文件,以下面的为例: package com.gdhdcy.whp; public class person_
两个Map一起使用时的析构问题
本人所做的测试都是在Windows系统下进行,平台是VS2013 ,语言C++,使用STL容器。 首先说明一点map或者set容器在数据量比较大的时候(10万以上),析构的时候特别的慢,分钟级的时间。 测试代码如下图片         map2的大小 map1的大小 map2析构时间 map1析构时
Python中lambda, map, reduce和filter函数的用法小结
lambda在Python中相当于一个匿名函数,只能写一行,对于一些代码量极其简短的函数,lambda可以起到速写的作用。 代码如下: def sum(a, b): return a + b sum(1, 2) # 使用lambda函数 sum = lambda a, b: a + b sum(1, 2) # 结果都为3值得注意的是,lambda中不能有return关键字
java集合框架
list set map list set map list set map
servlet中requestdispatcher和redirect的区别
servlet中requestdispatcher和redirect的区别         当向servlet的目标组件传递的时候,可以用题目上的两个函数来实现                   eg.  requestDispatcher("目标组件").forward(req, resp);                           redirect("目标组件“);
python 中 list里 str 和 int 间的坑
-
解析xml文件
list中放map,map的value 是list
修改datePick和timepicker大小
解决datepicker和timepicker一起用引起的布局样式问题
list map set区别
list map set联系与区别 list map set联系与区别 list map set联系与区别
JSON 和 List、Map集合结合使用
创建User类:package lgson; import java.util.ArrayList; import java.util.HashMap; /* * 自定义一个User类 * * */ public class User { public int id; public String Name; public int age; public ArrayList bo