关于string类的equals的问题

关于string类的equals的问题

问题描述:

package map;
import java.util.*;
import java.util.Map.Entry;
public class T37 {
	static Map<String,Set<String>> createDemoMap(){//正向索引
		Map<String,Set<String>> source=new HashMap<String,Set<String>>();
		Set<String> keywordSet1=new HashSet<String>();
		keywordSet1.add("KeyWord1");
		keywordSet1.add("KeyWord2");
		keywordSet1.add("KeyWord3");
		source.put("URL1", keywordSet1);
		Set<String> keywordSet2=new HashSet<String>();
		keywordSet2.add("KeyWord2");
		keywordSet2.add("KeyWord4");
		source.put("URL2", keywordSet2);
		Set<String> keywordSet3=new HashSet<String>();
		keywordSet3.add("KeyWord3");
		keywordSet3.add("KeyWord2");
		source.put("URL3", keywordSet3);
		return source;
	}
	  void showMap(Map<String,Set<String>> map){
		Set<Entry<String, Set<String>>> set=map.entrySet();//获取map中的键值对
		Iterator<Entry<String, Set<String>>> iterator=set.iterator();
	    while (iterator.hasNext()) {
	    	Entry<String, Set<String>> entry = iterator.next();//next()表示返回当前元素,并指向下一个元素
	    	System.out.println("key:"+entry.getKey()+"----"+"Values:"+"\n"+entry.getValue()+"\n");//getKey()表示返回键,值同理
		}
	}
	
	static Map<String,Set<String>> reverseIndex( Map<String,Set<String>> source){//反向索引
		Set<String> keywordSet=new HashSet<String>();
		Set<Entry<String, Set<String>>> set=source.entrySet();//获取map中的键值对
		Iterator<Entry<String, Set<String>>> iterator=set.iterator();
	    while (iterator.hasNext()) {
	    	Entry<String, Set<String>> entry = iterator.next();//next()表示返回当前元素,并指向下一个元素
	    	keywordSet.addAll(entry.getValue());
    }
	    System.out.println(keywordSet);
    Iterator<String> iter=keywordSet.iterator();
    while (iter.hasNext()) {
    	String str = iter.next();//next()表示返回当前元素,并指向下一个元素
    	if (str.equals("keyWord1")) {
    		Set<String> ur1=new HashSet<String>();
    		ur1.add("URL1");
    		source.put("keyWord1", ur1);
		}
    	else if(str.equals("keyWord2")){
    		Set<String> ur2=new HashSet<String>();
    		ur2.add("URL1");
    		ur2.add("URL2");
    		ur2.add("URL3");
    		source.put("keyWord2", ur2);
		}
    	else if(str.equals("keyWord3")){
    		Set<String> ur3=new HashSet<String>();
    		ur3.add("URL1");
    		ur3.add("URL3");
    		source.put("keyWord2", ur3);
    	}
    	else {
    		Set<String> ur4=new HashSet<String>();
    		ur4.add("URL4");
    		source.put("keyWord4", ur4);
    	}	
}
	return source;
    	}	
public static void main(String[] args) {
	System.out.println("===========正向索引===========");
	T37 x=new T37();
		Map<String,Set<String>> source=createDemoMap();
		x.showMap(source);
		System.out.println("===========反向索引===========");
		T37 y=new T37();
 	Map<String,Set<String>> reverseMap=reverseIndex(source);
 	    	y.showMap(reverseMap);		

	}

}

string类型不是本来就重写了equals嘛,比较的是内容,可是我这个程序里前面那几个判断都不成立啊

只有当两个字符串常量比较时,才是比较值。