String mgrDeptConfigId ="1092,1032,1072";//配置数据
String mgrDeptid = "1072,1083,1032,1029,1098,1092";//用户选择的数据
有两个逗号分隔的字符串,请问如何在mgrDeptid中过滤掉mgrDeptConfigId中的值,保证最终得到的结果为"1083,1029,1098",请教大家该如何处理,谢谢!
String mgrDeptConfigId ="1092,1032,1072";//配置数据
String mgrDeptid = "1072,1083,1032,1029,1098,1092";//用户选择的数据
String[] mdcs = mgrDeptConfigId.split(",");
String[] mds = mgrDeptid.split(",");
HashSet set1 = new HashSet(Arrays.asList(mdcs));
HashSet set2 = new HashSet(Arrays.asList(mds));
set2.removeAll(set1);
System.out.println(set2.toString());
可以先把字符串转为数组然后去重
java?不懂语法,之说简单的,不考虑复杂度的过程吧。
1. 两个字符串按照“,”分割,得到两个字符串数组A、B
2. 拿B中的每个元素与A中的各个元素比较,相同的忽略;完全不同的添加进一个新的数组C中
3. 将C每个元素加上“,”拼成新的字符串
1.直接往set存,自动去重。
2.使用list的contains方法判断去重。
3.笨办法,2次遍历如果相等就去掉重复的元素。
如下
public static void main(String[] args) {
String mgrDeptConfigId = "1092,1032,1072";// 配置数据
String mgrDeptid = "1072,1083,1032,1029,1098,1092";// 用户选择的数据
// 先转换成list
List<String> list = Arrays.asList(mgrDeptid.split(","));
// 转换成ArrayList
List arrayList = new ArrayList(list);
// 遍历ArrayList
Iterator<String> it = arrayList.iterator();
while (it.hasNext()) {
String x = it.next();
// 如果存在,直接删除
if (mgrDeptConfigId.indexOf(x) != -1) {
it.remove();
}
}
String you_want = StringUtils.join(arrayList.toArray(), ",");
System.out.println(you_want);
}
字符串转数组,然后去重就好了。
String aa = "1092,1032,1072";//配置数据
String bb = "1092,1072,1083,1032,1029,1098";//用户选择的数据
String[] aaSplit = aa.split(",");
String[] bbSplit = bb.split(",");
List<String> aaList = Arrays.asList(aaSplit);
List<String> bbList = Arrays.asList(bbSplit);
List<String> ccList = new ArrayList<>();
for (int i = 0; i < bbList.size(); i++) {
boolean contains = aaList.contains(bbList.get(i));
if (!contains) {
ccList.add(bbList.get(i));
}
}