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;
}

list.remove出错 报 Not source之类的错误的更多相关文章

  1. maven编译报错 -source 1.5 中不支持 lambda 表达式

    在用maven编译项目是由于项目中用了jdk 1.8, 编译是报错  -source 1.5 中不支持 lambda 表达式,Google找到这篇解决方案,记录一下: 编译时报如下错误: [ERROR ...

  2. 发布自己的nuget包;报错source parameter was not specified

    16-10-27 VS下使用 程序包管理器控制台 运行: 1.cd 命令走到 工程文件夹下,使用 ls 命令查看当前目录: 2. 使用 nuget spec 创建: 3. 使用 nuget pack ...

  3. myeclipse debug模式 报错source not found

    myeclipse debug模式下,启动报错 source not found:SignatureParser.current() line: 解决方法:将debug视图下的右上方的jar有断点的地 ...

  4. 【Maven】Maven-maven编译报错 -source 1.5 中不支持 lambda 表达式

    Maven-maven编译报错 -source 1.5 中不支持 lambda 表达式 maven lambda_百度搜索 maven编译报错 -source 1.5 中不支持 lambda 表达式 ...

  5. maven编译报错 -source 1.5 中不支持 lambda 表达式(转)

    原文链接:http://blog.csdn.net/kai161/article/details/50379418 在用maven编译项目是由于项目中用了jdk 1.8, 编译是报错  -source ...

  6. maven编译报错 -source 1.5 中不支持 lambda(或diamond) 表达式,编码 UTF-8 的不可映射字符

    在用maven编译项目是由于项目中用了jdk 1.8, 编译是报错  -source 1.5 中不支持 lambda 表达式. 错误原因: Maven Compiler 插件默认会加 -source ...

  7. Linux中的基本命令无法使用,报Command not found的错误的解决方法

    一般我们在Linux中执行命令的时候,会报 Command not found 的错误,报这种错误一般有两种原因:一是你的系统中没有安装这个命令,需要你手动安装,另外一种原因就是平常这些命令用着好好的 ...

  8. VS2017打开VS2010项目报 “找不到*.xaml”错误

    VS2017打开VS2010项目报 “找不到*.xaml”错误.详细如下: 未处理System.IO.IOExceptionMessage: “System.IO.IOException”类型的未经处 ...

  9. 烂泥:【解决】virtualbox启动报创建COM对象失败错误

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 今天在启动virtualbox时,发现virtualbox报创建COM对象失败错误,如下图: 查找相关资料发现很有可能是virtualbox与OS不兼容 ...

随机推荐

  1. ubuntu16.04使用Qt开发ROS

    本文介绍一种Qt下进行ROS开发的完美方案,使用的是ros-industrial的Levi-Armstrong在2015年12月开发的一个Qt插件ros_qtc_plugin,这个插件使得Qt“新建项 ...

  2. hdfs 操作 入门api

    获取分布式文件系统 // 获取文件系统 @Test public void getFileSystem() throws Exception{ Configuration configuration ...

  3. 最佳实践:腾讯HTAP数据库TBase助力某省核心IT架构升级

    https://mp.weixin.qq.com/s/56NHPyzx5F6QeCjuOq5IRQ 资源隔离能力: 在HTAP系统中,OLTP和OLAP业务要同时运行,两者都会消耗巨量的资源都,如果不 ...

  4. MiniHook研究

    git hub 地址: https://github.com/RaMMicHaeL/minhook

  5. LeetCode 852 Peak Index in a Mountain Array 解题报告

    题目要求 Let's call an array A a mountain if the following properties hold: A.length >= 3 There exist ...

  6. 第二章 构建布局良好的windows程序

    工具箱→菜单和工具栏 菜单栏 MenuStrip的类型 MenuItem:菜单项 TextBox:文本框 ComboBoX:组合框 Separato:分割线 前面都有ToolStrip做前缀 Appl ...

  7. Python识别字符型图片验证码

    前言 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻.本文介绍了一套字符验证码识别的完整流程,对于验 ...

  8. Python字符串切片

    1.字符串切片:从字符串中取出相应的元素,重新组成一个新的字符串 语法: 字符串[    开始元素下标  :  结束元素下标  :  步长     ]   # 字符串的每个元素都有正负两种下标 步长: ...

  9. shell编程awk进阶

    awk操作符 算术操作符:  x+y, x-y, x*y, x/y, x^y, x%y      -x: 转换为负数      +x: 转换为数值 字符串操作符:没有符号的操作符,字符串连接 赋值操作 ...

  10. c# 文件或者文件夹改名的最简单方法

    使用cmd命令 ren Process.Start( "cmd", "/C " + "ren f:\\first c code.txt zhou.tx ...