string[] str1 = {"1"};
string[] str2 = {"1"};
system.out.println(str1.equals(str2));
输出是false,可是我想让它的equals为true,有什么办法?
string[] str2 = {"1"};
system.out.println(str1.equals(str2));
输出是false,可是我想让它的equals为true,有什么办法?
String[] str2 = str1;
System.out.println(str1.equals(str2)); 这样才会是true
你那样指向不同对象 equals 不会true
除非你自己定义数组,自己写equals方法定义规则
如果key中有数据相等的数组,则s对应的integer加1;
如果没有,则map.put(s,1).
public static void main(String[] args) {
String[] str1 = {"1"};
Map<String[],Integer> map = new HashMap<String[],Integer>();
if(map.containsKey(str1)){
map.put(str1,map.get(str1)+1);
}else {
map.put(str1,1);
}
}这个?
public String[] comparperd(String[] s){
Integer n = new Integer(s.length);
Set<String[]> set = kMap.get(n);
if(set != null){
Iterator<String[]> it = set.iterator();
while(it.hasNext()){
String[] s1 = it.next();
if(Arrays.equals(s, s1)){
return s1;
}
}
}
return null;
}public void addToSupMap(String[] s){
//System.out.println("the n is " + n);
String[] temp = this.comparperd(s);
String[] s1 = temp!= null?temp:s;
Integer n = supMap.get(s1);
if(n == null){
supMap.put(s1, 1);
}else{
supMap.put(s1, n + 1);
}
}
String[] str1 = {"1"};
String[] str2 = {"1"};
//System.out.println(str1.equals(str2));
System.out.println(Arrays.equals(str1, str2));
private String[] str;
public boolean equals(Key){
//遍历Key.str看是否与本对象的str一一相等
}
public long hashcode(){
//具体就是按照String生成hashcode的方法
long code=0L;
for(int i=0;i<this.str.length;i++)
code+=code*31+str[i].hashcode();
return code;
}
}这样就可以用Key封装String[]作为HashMap的键
正解,数组有自己的equals方法
System.out.println(Arrays.equals(str1, str2));-----很喜欢这个~~
应该是这样的:
String[] s1 = {"1"};
String[] s2 = str1;
System.out.println(s1.equals(s2));
其实重写 equals 就可以