博主还是刚入门的菜鸟 有更好的 欢迎大家留言
1。字符串之间的比较 (包含区分大小写,空格和特殊字符 \n\t\t)
/**
* @param str1
* @param str2
* @param ignoreSapce 是否忽略空格
* @param ignoreCase 是否忽略大小写
* @return
*/
public static boolean cmpStr(String str1, String str2, boolean ignoreSapce, boolean ignoreCase) throws Exception {
if (null == str1 && null == str2) {
return true;
} else if (null == str1 && null != str2) {
return false;
} else if (null != str1 && null == str2) {
return false;
}
String a = new String(str1), b = new String(str2);
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = new StringBuffer();
if (ignoreCase) {
a = a.toUpperCase();
b = b.toUpperCase();
}
if (ignoreSapce) {
char[] char1 = a.toCharArray();
char[] char2 = b.toCharArray();
for (char ch1 : char1) {
if (ch1=='\n' || ch1 == '\r' || ch1 == '\t' || ch1 == ' '){
continue;
}else {
sb.append(ch1);
}
}
for (char ch2 : char2) {
if (ch2=='\n' || ch2 == '\r' || ch2 == '\t' || ch2 == ' '){
continue;
}else {
sb1.append(ch2);
}
}
a = new String(sb.toString());
b = new String(sb1.toString());
}
return a.equals(b);
}
2必须两个List集合是否一样(调用第一个方法)这个很简单 其实就是把list转为String然后调用第一个就可以了
/**
* @param line1
* @param line2
* @param ignoreSapce 是否忽略空格
* @param ignoreCase 是否忽略大小写
* @return
*/
public static boolean cmpLine(List<String> line1, List<String> line2, boolean ignoreSapce, boolean ignoreCase)
throws Exception {
if (null == line1 && null == line2) {
return true;
} else if (null == line1 && null != line2) {
return false;
} else if (null != line1 && null == line2) {
return false;
}
if (line1.size() != line2.size()) {
return false;
}
if (!cmpStr(line1.toString(), line2.toString(), ignoreSapce, ignoreCase)) {//调用第一个字符串的比较
return false;
}
return true;
}
3。比较两个结果集是否相等(这里有结果集的排序用到Collections.sort进行排序 不在此进行详细介绍)
/**
* @param data1
* @param data2
* @param ignoreSapce 是否忽略空格
* @param ignoreCase 是否忽略大小写
* @param ignoreOrder 是否忽略顺序
* @return
*/
public static boolean cmpData(List<List<String>> data1, List<List<String>> data2, boolean ignoreSapce,
boolean ignoreCase, boolean ignoreOrder) throws Exception {
if (null == data1 && null == data2) {
return true;
} else if (null == data1 && null != data2) {
return false;
} else if (null != data1 && null == data2) {
return false;
}
if (data1.size() != data2.size()) {
return false;
}
List<String> d1 = new ArrayList<String>();
List<String> d2 = new ArrayList<String>();
for (int i = 0; i < data1.size(); i++) {
List<String> al = data1.get(i);
List<String> bl = data2.get(i);
if (al == null) {
d1.add("null");
} else {
d1.add(al.toString());
}
if (bl == null) {
d2.add("null");
} else {
d2.add(bl.toString());
}
}
if (ignoreOrder) {
Collections.sort(d1);
Collections.sort(d2);
}
return cmpLine(d1, d2, ignoreSapce, ignoreCase);//此处调用第二个方法
}
测试数据
public static void main(String[] args) throws Exception {
List<List<String>> data1 = new ArrayList<List<String>>();
List<List<String>> data2 = new ArrayList<List<String>>();
List<String> l1 = new ArrayList<String>();
List<String> l2 = new ArrayList<String>();
l1.add("11");
l1.add("22");
l2.add("33");
l2.add("44");
data1.add(l1);
data1.add(l2);
List<String> l3 = new ArrayList<String>();
List<String> l4 = new ArrayList<String>();
l3.add("33");
l3.add("44");
l4.add("11");
l4.add("22");
data2.add(l3);
data2.add(l4);
System.out.println(cmpData(data1, data2, false, false, false));
System.out.print(cmpData(data1, data2, false, false, true));
String str="\r\n\t";
String str1="\r\t";
if (s1.equals(s2)){
System.out.println();
}
System.out.println(cmpStr("a\n \r\n abbb", "a\t abbb", true, true));
}