这道题有俩个注意的地方,第一个是根据“,”切割字符串,对没有错,我在这地方卡住了,因为我一直在找英文的",",而这道题是中文“,",所以这里把我卡了半天,面试的同学开始不要急写代码,记得先看清楚题目。第二点就是这道题中要存储了一个相同的键,大家都知道常用的map是不能存储相同的键,我是想继承hashMap改写put的方法,无奈功底不够,最后是找到了map中的子类 IdentityHashMap<K,V>可以存储相同键。 
不多说,上题, 上代码 
 
/* 
 * 1、有类似这样的字符串:“1.2,3.4,5.6,7.8,5.56,44.55”, 请按照要求,依次完成以下试题 
 
   ① 以逗号作为分隔符,把已知的字符串分成一个String类型的数组, 
           数组中的每一个元素类似于“1.2","3.4"这样的字符串; 
            
   ② 把数组中的每一个元素以.作为分割,把.号左边的元素作为key, 
           把.号右边的元素作为value,封装到Map中,map中的key和value都是Object类型; 
            
   ③ 把map中的key封装到Set中,并且把set中的元素输出; 
    
   ④ 把map中的value封装到Collection中,把collection中的元素输出。 
 * */ 
 
/* 
 * 思路:1首先分割"," 注意是中文“,”,存入到字符串数组 
 *  
 *                 2遍历字符串数组, 分割".",存到各个字符串数组,用map将对应键值存储 
 *  
 *                 3用map中的keySet方法转成set集合,然后输出键值key 
 *  
 *                 4然后将值存到Collention集合中, 这里注意用ArrayLIst存储,因为可以顺序存储,与输出键可以对应 
 *  
 *遇到的问题:首先在切割“,”就花费了好长时间,后来重写代码发现“,“是中文,而不是英文”,“在这里就消耗大量时间 
 *                        最后做出这题时,发现无论用hashMap还TreeMap都不允许出现同样的键,试图继承hashMap重写put方法,想了 
 *                        好久想不出了,最后面试结束查看api文档发现map中还有一个类IdentityHashMap 此类可以允许存储相同键 
 * */ 
import java.util.*; 
public class test3 { 
        public static void main(String[] args) 
        { 
                String str = "1.2,3.4,5.6,7.8,5.56,44.55"; 
                 
                String[] newStr = str.split(",");//将字符切割出来 
                 
                Map<String, String> me = new IdentityHashMap();//创建map 
                 
                for(int i = 0; i < newStr.length; i++) 
                { 
                         
                        String str1 = new String(newStr[i]); 
                         
                        String[] str2 = str1.split("\\.");//切割 点 
                         
                        String s1 = new String(str2[0]); 
                        String s2 = new String(str2[1]); 
                        me.put(s1, s2);//用map存储键和值 
                } 
                System.out.println(me); 
                Set keySet = me.keySet();//创建set 
                Iterator it1 = keySet.iterator(); 
                System.out.println("键值key为:"); 
                while(it1.hasNext()) 
                { 
                        Object key = it1.next(); 
                        System.out.print(key + " "); 
                } 
                 
                System.out.println(); 
                Collection c = new ArrayList();//创建ArrayList()因为是顺序存储 
                Iterator it2 = keySet.iterator(); 
                while(it2.hasNext()) 
                { 
                        Object key = it2.next(); 
                        Object value = me.get(key); 
                        c.add(value);//将对应值存入到collection c中 
                } 
                 
                System.out.println("对应的value值为:");//输出value 
                System.out.println(c); 
        } 
} 
 |   
        
 
    
    
    
     
 
 |