java操作对⽐两个字符串,将差异数据提取出来记录瞬间
在实际的⼯作中,需要解决⽣成两次字符串结果进⾏对⽐的问题,将存在差异的字符串直接给出来。
当然,前提是需要将对⽐的两次结果,进⾏前期处理
⽐如:
a_str = "@com/enen#123.java=M:3-C:9|@com/hehe#456.java=M:282-C:0|@com/wawo#789.java=M:5-C:1|987.java=M:9-C:1|654.java=M:4-C:1"
b_str = "@com/enen#123.java=M:4-C:8|@com/hehe#456.java=M:22-C:260|@com/wawo#789.java=M:5-
C:1|987.java=M:9-C:1|654.java=M:1-C:4"
下⾯的代码就是按照上述的字符串⽅式,进⾏使⽤的,如有修改可以根据⾃⼰实际情况进⾏更新
private String CompareData(String before, String latest){
// 如果两个字符串相同,那么就不需要进⾏对⽐了
if (before.equals(latest)) {return "";}
// 执⾏分割
String[] s1 = before.split("@");
String[] s2 = latest.split("@");
// 定义返回⽐对信息
StringBuilder contrastData = new StringBuilder();
// 将信息保存到哈希表中
Map<String, String> pack_before = new HashMap<String, String>();
Map<String, String> pack_latest = new HashMap<String, String>();
// 保存上⼀次信息过程
for (String temp: s1) {
if (temp.length() == 0) { continue; }
pack_before.put(temp.split("#")[0], temp.split("#")[1]);
}
// 保存当前信息过程
for (String temp: s2) {
if (temp.length() == 0) { continue; }
pack_latest.put(temp.split("#")[0], temp.split("#")[1]);
}
// 遍历前⼀次信息,与当前信息做以对⽐
for (Map.Entry e: Set()) {
// 如果存在信息,进⾏下⼀步操作,否则,前⼀次信息中在当前执⾏的情况下,存在被删除的情况
if(Key())) {
// 对⽐前⼀次与当前的结果值是否相同,不同的话进⼀步对⽐
if (! (e.getKey()).Value())) {
// 将包信息保存到整体信息中
contrastData.append("P:" + e.getKey() + "\n");
wa字符串是什么 // 将类信息保存到链表中
List<String> beforeList = new ArrayList<>();
List<String> latestList = new ArrayList<>();
// 获取类信息的数组
String[] before_str = e.getValue().toString().split("\\|");
String[] latest_str = (e.getKey()).toString().split("\\|");
// 遍历保存
for (String temp: before_str){
beforeList.add(temp);
}
for (String temp: latest_str){
latestList.add(temp);
}
// 将后⼀次中存在前⼀次的所有元素删除
for (String latestTemp : latestList) {
String getClass = latestTemp.split("=")[0];
// 决定是否存在对⽐的信息
boolean flag = true;
for (String beforeTemp: beforeList) {
if (beforeTemp.split("=")[0].equals(getClass)) {
flag = false;
}
if (String().contains(latestTemp)) {continue;}
if (flag) {
// 新增加的信息
contrastData.append("NC:" + latestTemp + "\n");
} else {
// 可以对⽐的信息,B代表前⼀次的,L代表最新⼀次 contrastData.append("B:" + beforeTemp + "-L:" + latestTemp + "\n");
flag = true;
}
}
}
}
} else {
System.out.println("already deleted!!" + e.getKey());
}
}
String();
}
通过上述的对⽐,拿到了对⽐的结果如下:
P:com/wawo
B:654.java=M:1-C:4
L:654.java=M:4-C:1
P:com/hehe
B:456.java=M:22-C:260
L:456.java=M:282-C:0
P:com/enen
B:123.java=M:4-C:8
L:123.java=M:3-C:9
+++++++++++++++++++++我是底线+++++++++++++++++++++
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论