java 如何让 不同位置但内容一样的数据 相等
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何让 不同位置但内容一样的数据 相等相关的知识,希望对你有一定的参考价值。
如 下面 内容完全一样,但用 ==或equals 比较不能得到 true
"version_code":"28","id":"1023005"
"id":"1023005","version_code":"28"
String a="\"version_code\":\"28\",\"id\":\"1023005\"";
String b="\"id\":\"1023005\",\"version_code\":\"28\"";
System.out.println(JSONObject.fromObject(a).equals(JSONObject.fromObject(b)));
输出结果true本回答被提问者采纳 参考技术B package test;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test
public static void main ( String[] args )
String s1 = "\\"version_code\\":\\"28\\",\\"id\\":\\"102f3005\\"";
String s2 = "\\"id\\":\\"1023005\\",\\"version_code\\":\\"28\\"";
String regex = "\\\\?[\\"\\']?([^\\\\:\\"\\'\\\\,]+)[\\\\:\\"\\'\\\\s]+([^\\"\\'\\\\,\\\\:]*)[\\"\\']?";
Pattern pattern = Pattern.compile (regex);
Matcher m1 = pattern.matcher (s1);
Matcher m2 = pattern.matcher (s2);
HashMap<String, String> map1 = new HashMap<String, String> ();
HashMap<String, String> map2 = new HashMap<String, String> ();
while (m1.find ())
String key = m1.group (1);
String value = m1.group (2);
map1.put (key, value);
while (m2.find ())
String key = m2.group (1);
String value = m2.group (2);
map2.put (key, value);
boolean isTheSame = true;
for ( String key : map1.keySet () )
if (!map1.get (key).equals (map2.get (key)))
isTheSame = false;
break;
System.out.println (isTheSame ? "相同" : "不相同");
追问
谢谢你。不过太麻烦了。
System.out.println(JSONObject.fromObject(a).equals(JSONObject.fromObject(b)));.
这样就可以
你要早说你用JSONObject就知道了。。。提问都不会提
参考技术C public class TestObjprivate String id;
private String version_code;
public String getId()
return id;
public void setId(String id)
this.id = id;
public String getVersion_code()
return version_code;
public void setVersion_code(String version_code)
this.version_code = version_code;
@Override
public int hashCode()
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result
+ ((version_code == null) ? 0 : version_code.hashCode());
return result;
@Override
public boolean equals(Object obj)
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
TestObj other = (TestObj) obj;
if (id == null)
if (other.id != null)
return false;
else if (!id.equals(other.id))
return false;
if (version_code == null)
if (other.version_code != null)
return false;
else if (!version_code.equals(other.version_code))
return false;
return true;
public static void main(String[] args)
String str1 = "\"version_code\":\"28\",\"id\":\"1023005\"";
String str2 = "\"id\":\"1023005\",\"version_code\":\"28\"";
TestObj obj1 = JSON.parseObject(str1, TestObj.class);
TestObj obj2 = JSON.parseObject(str2, TestObj.class);
System.out.println(obj1.equals(obj2));
依赖于fastJson包,你去下一个追问
private String id;
private String version_code;
id version_code这些是没用的吧?
test obj1 = JSON.parseObject(str1, test.class);
test obj2 = JSON.parseObject(str2, test.class);
还是false。。。
参见:
http://blog.sina.com.cn/s/blog_9f48885501013kzo.html 第5个回答 2015-03-06 先转对象,再比较。追问
String a="\"version_code\":\"28\",\"id\":\"1023005\"";
String b="\"id\":\"1023005\",\"version_code\":\"28\"";
Object add=a;
Object addd=b;
== equal 都是false
你比较的是两个字符串,要把内容变成对象。
java中如何比较两个数组确定是不是相等?
比如说我设计了个密码锁有两个数组int[] secret 和 int[] input。最后要开锁的时候要确定两个数组中的内容是否相等,我首先是用了if (secret,equals(input)) 结果调试的时候发现这里答案是不相等。。。然后我又用了secret == input发现结果还是一样的,不相等。最后我改成了secret[0] == input [0]这样一个一个比较,然后答案便是相等了。请问这是为什么呢? 有没有办法用一个式子就能确定相等?
java比较两个字符串是否相等可以用equals方法或者是“==”。
equals 方法常常用来比较两个对象的内容是否相等,如果只是比较对象的内容,而不比较对象来源和功能类型时,常用此方法。
“==”常用于用于比较引用和比较基本数据类型时是否具有不同的功能,或者是基本数据类型,如果两个值相同,则结果为true,在比较引用时,如果引用指向内存中的同一对象,结果为true。
在比较字符串时,使用equals方法会比较两个对象的字符串常量池里的内容是否相等,在使用“==”方法比较字符串时,需要指定字符串常量池里的比较的那个内容,如果内容相等结果则为true,如果没有指定内容,比较的是内容的来源。
扩展资料
java比较数组时是否相等的判断条件:
一、若当前对象和比较的对象是同一个对象,即return true。也就是Object中的equals方法。
二、若当前传入的对象是String类型,则比较两个字符串的长度,即value.length的长度。
1、若长度不相同,则return false
2、若长度相同,则按照数组value中的每一位进行比较,不同,则返回false。若每一位都相同,则返回true。
三、若当前传入的对象不是String类型,则直接返回false
参考资料来源:百度百科——equals
参考技术A package rechapter9;import java.util.Arrays;
public class BigDecimalDemo
public static void main(String[] args)
int[] secret = 2,3,4,5;
int[] input = 2,3,4,5;
System.out.println(Arrays.equals(secret,input));//true
不用自己写,有自带的
参考技术B Object 的equals方法比较的是地址;String的equals方法比较的是内容。一个式子就能确定相等:
java.util.Arrays类下的
public static boolean deepEquals(Object[] a1,Object[] a2)
对于密码,我建议不要只是用数字哦,这个解决非数字问题。 参考技术C
判断java中的数组是否相等,有一个方法:Array.equal(new int[], new int[]);
这样的结果是:true。
参考技术D 写一个类,数组作为成员变量,重写(equals 方法)或者自己写一个方法 就可以了的啊以上是关于java 如何让 不同位置但内容一样的数据 相等的主要内容,如果未能解决你的问题,请参考以下文章