Java拼接字符串时,去掉最后一个多余的逗号(及不产生多余的逗号)

作者初学Java,遇到一道题:

已知一个List中存有若干人的姓名,如list=[tom jack smith nickel],要求将list中的所有姓名拼接成一个字符串“tom,jack,smith,nickel”

在拼接字符串时,可能会在字符串最后多出一个逗号。下面注释中提供了两种解决方法。有错误或不完善之处欢迎提出来。

package com.java;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class TestFour {
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add("tom");
		list.add("jack");
		list.add("smith");
		list.add("nickel");
/* 去掉最后一个多余的逗号
		String s = "";
		Iterator it = list.iterator();
		while(it.hasNext()){
			String o = (String)it.next();
			s += o + ",";
			if(!it.hasNext()){
				StringBuffer s1 = new StringBuffer(s);
				s1 = s1.deleteCharAt(s1.length() - 1);
				s = s1.toString();
			}
		}
		System.out.print(s);
*/

		
/* 不产生多余的逗号
		StringBuffer s = new StringBuffer();
		Iterator it = list.iterator();
		while(it.hasNext()){
			Object o = it.next();
			if(s.length() > 0){
				s.append(",");
				s.append(o);
			} else{
				s.append(o);
			}	
		}
		String ss = s.toString();
		System.out.println(ss);
*/
	}
}

2019.3.10更新

统计字符串中各单词出现的次数,例如:字符串为“java,java,j2ee,ibm,j2ee,ibm,j2me,java”,结果为“j2me-1个;java-3个;ibm-2个;j2ee-2个”

package com.first;

import org.apache.commons.lang3.StringUtils;// http://commons.apache.org/proper/commons-lang/download_lang.cgi

import java.util.HashMap;
import java.util.Map;

public class CountWords {
    public static void main(String[] args) {
        String str = "java,java,j2ee,ibm,j2ee,ibm,j2me,java";
        String[] arr = str.split(",");//字符串转为数组,用“,”分割
        Map<String,Integer> map = new HashMap<>();//以单词作为key,出现次数作为value,存进Map
        /*
         *遍历数组,判断Map中是否存在此单词。不存在,则将该单词存进去,value为1;存在,则将value加1。
         */
        for (String e : arr) {
            if (map.get(e) == null){
                map.put(e,1);
            }else{
                map.put(e,map.get(e) + 1);
            }
        }
        int size = map.keySet().size();    //下面要创建一个数组,这里先获得数组的长度
        String[] strArr = new String[size];
        int index = 0;//数组下标
        for (Object e : map.keySet()) {
            strArr[index] = e + "-" + map.get(e) + "个";//将遍历Map的结果存进数组,为了不产生多余的符号
            index++;
        }
        System.out.println(StringUtils.join(strArr,";"));//将数组转为字符串,用“,”分割
    }
}

通过“StringUtils.join(数组,分隔符)”输出字符串,避免产生多余符号。调用此方法需要引入“commons-lang3”包,可以去https://www-eu.apache.org/dist//commons/lang/binaries/commons-lang3-3.8.1-bin.zip下载3.8.1版本的jar包。

或者http://commons.apache.org/proper/commons-lang/download_lang.cgi

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值