今天在做字符串切割时候想以“.”进行切割,可是切出来的东西都不是我想要的,后来觉得是不是“.”是不是有特殊含义,想用转义字符“\.”竟然报错了。瞬间郁闷,经多方查找终于找到解决办法“\\.”究其原因是因为正则表达式中.代表所有字符 想用.本身的意思就要\.而在JAVA中想用.本身的意思就要\\.
下面代码奉上:
package intcast_0430;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/*
* 1、有类似这样的字符串:"1.2,3.4,5.6,7.8,5.56,44.55"请按照要求,依次完成以下试题。
* (1)以逗号作为分隔符,把已知的字符串分成一个String类型的数组,数组中的每一个元素类似于"1.2","3.4"这样的字符串
* (2)把数组中的每一个元素以"."作为分隔符,把"."左边的元素作为key,右边的元素作为value,封装到Map中,Map中的key和value都是Object类型。
* (3)把map中的key封装到Set中,并把Set中的元素输出。
* (4)把map中的value封装到Collection中,把Collection中的元素输出。
* 思路: 1)字符串切割,保存在字符串数组中{"1.2","3.4","5.6","7.8","5.56","44.55"};
* 2)再次切割字符串数组中的元素用另一个接收,遍历这个数组存到map集合中
* 3)获取map中的key转存到set集合
* 4)获取map中的value转存到collection集合中
*/
public class ExamTest1 {
public static void main(String[] args) {
String string = "1.2,3.4,5.6,7.8,5.56,44.55";
//定义Map集合泛型为Object类型
Map<Object, Object> map = new HashMap<Object, Object>();
//分割字符串字符数组接收
String[] str = string.split(",");
//循环遍历过程中切割数组内部字符串存入Map集合需要Map集合
for(String string1:str){
//System.out.print(string1+" ");
String[] str2 = string1.split("\\.");
//遍历Str2存入集合
for(int x=0; x<str2.length;x++){
map.put(str2[0], str2[1]);
}
}
//set集合接收key
Set<Object> set = map.keySet();
// for (Object object : set) {
// System.out.println(object+"**"+map.get(object));
// }
System.out.println(set);
//collection集合接收value
Collection<Object> collection = map.values();
System.out.println(collection);
System.out.println("\"");
}
}
|
|