zoukankan      html  css  js  c++  java
  • list.remove出错 报 Not source之类的错误

    private static String removePreviousString(String str,String strPre){
    String[] strArray = str.split(",");//有冗余的权限,之前的权限和现在修改的权限
    String[] strPreArray = strPre.split(",");//之前设置的权限
    int[] a = new int [strPreArray.length];//保留需要剔除的之前的权限号位置
    int aNum = 0;
    StringBuffer sb = new StringBuffer();//用于输出
    Set<String> mLinkedSet = new LinkedHashSet<String>();//判断是否已包含了要剔除的权限
    for(int i=0;i<strPreArray.length;i++){
    for(int j=i;j<strArray.length;j++){
    if(strPreArray[i].equals(strArray[j]) && !mLinkedSet.contains(strArray[j])){
    mLinkedSet.add(strPreArray[i]);
    a[aNum] = j;
    aNum++;
    }
    }
    }
    String[] strings = removeArray(strArray, a);
    for(int k=0;k<strings.length;k++){
    sb.append(strings[k]+",");
    }
    return sb.toString().substring(0,sb.toString().length()-1);

    }

    =========================================

    private static String[] removeArray(String[] str,int[]a){
    List<String> list = new ArrayList<String>();
    for(int i=0;i<str.length;i++){
    list.add(str[i]);
    }
    for(int j=0;j<a.length;j++){
    list.remove(a[j]);
    }
    str = list.toArray(new String[1]);
    return str;
    }

    =================================

    原因list集合有5个 然后要移除第0,1,4

    移除了第0位 那么list集合就剩4个 ,接着再移除第1位,后面移除第4位就报错,因为没有这位

    而且假如list集合是0-1-2-3-4 要移除0;1;4

    这样移除就1-2-3-4 -》1-3-4 -》报错 Not Source 不仅移除不准确,而且还容易报错, 

    如果嫌麻烦,不想使用其他的方法,还是要用这种方法的话,就改成从后往前的方法进行

    PS:需要注意的是,这种方法移除的位数要进行排序

    ==========================================

    Arrays.sort(a);
    for(int j=0;j<a.length;j++){
    list.remove(a[a.length-1-j]);
    }

    ==========================================

    private static String[] removeArray(String[] str,int[]a){
    List<String> list = new ArrayList<String>();
    for(int i=0;i<str.length;i++){
    list.add(str[i]);
    }
    Arrays.sort(a);
    for(int j=0;j<a.length;j++){
    list.remove(a[a.length-1-j]);
    }
    str = list.toArray(new String[1]);
    return str;
    }

  • 相关阅读:
    遍历切片slice,结构体struct,映射map,interface{}的属性和值
    [转]Go语言string,int,int64 ,float之间类型转换方法
    [转] golang中struct、json、map互相转化
    [转]Jupyter默认目录和默认浏览器修改
    sublime text3输出窗口中文显示乱码问题解决方案
    Oracle 在SQL语句中如何获取系统当前时间并进行操作
    eclipse调试的时候怎么后退?
    外部无法访问虚拟机8088和50070端口
    hadoop启动后jps查不到namenode的解决办法
    Java给整数部分的字符串加上千分位分隔符
  • 原文地址:https://www.cnblogs.com/ccgyyn/p/10035497.html
Copyright © 2011-2022 走看看