问题
随机给出一个字符串,用分号隔开(如 String str = "准备工作;开始之前;开始;开始;完成;准备工作;a;a;b;c;d;c;c";),判断str中出现的重复字段及重复次数
分析
首先将strz转化为数组,对数组进行操作
把数组循环结果放进集合中,进行迭代,对迭代出来的结果进行判断
代码实现
public static String getSameWordAndCount(String str) {
// 把字符串转化为数组
String[] sb = str.split(";");
// 创建一个集合,把数组放到集合中
Map map = new HashMap();
// 创建StringBufferd对象,用来存放重复的字段和次数,可以追加
StringBuffer sbf = new StringBuffer();
for (int i = 0; i
//if (map.containsKey(sb[i])) { // 判断集合中是否存在,如果存在,则value值+1
//map.put(sb[i], map.get(sb[i]) + 1);
//} else {
//map.put(sb[i], 1);// 不存在,则value值默认是1
//}
// 也可以使用三目运算符
map.put(sb[i], map.containsKey(sb[i]) ? map.get(sb[i]) + 1 : 1);
}
// 通过entrySet对map进行迭代取值,对value值进行判断,从而筛选出重复字段和重复次数
Set> entrySet = map.entrySet();
for (Entry entry : entrySet) {
if (entry.getValue() > 1) {
sbf.append("重复字段:" + entry.getKey() + ";重复次数:" + entry.getValue() );
}
}
return sbf.toString();
}
检验结果
public static void main(String[] args) {
String str = "准备工作;开始之前;开始;开始;完成;准备工作;a;a;b;c;d;c;c";
}
输入内容:
领取专属 10元无门槛券
私享最新 技术干货