java字符串颠倒顺序后输出

java面试 专栏收录该内容
1 篇文章 0 订阅

java字符串颠倒顺序后输出

    有一个字符串: I like java, 要求将顺序颠倒后输出,结果为:java like I.在网上找了下也没找到自己能跑通的,就自己动手实现了下。

第一种实现方式

    大概思路:先将String字符串转换我char数组(其实不转换,直接遍历字符串也行),遍历数组拼接字符串,如果遇到空格就将字符串添加到List中,清空拼接的字符串,跳出此次循环,最后将list的游标指到末尾,逆序遍历list,再次拼接字符串输出就可以了。具体代码如下:

    static void reverseOrderByChar(String string){
       List<String> list = new ArrayList<>();
        char[] chars = string.toCharArray();
        StringBuilder str = new StringBuilder();
        int charLength = chars.length;
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == ' ') {
               list.add(str.toString());
                str = new StringBuilder();
                continue;
            }
            str.append(chars[i]);
            if (i == charLength - 1) {
                list.add(str.toString());
            }
        }
        ListIterator<String> listIterator = list.listIterator();
        while (listIterator.hasNext()){
            listIterator.next();
        }

        StringBuilder orderStr = new StringBuilder();
        while (listIterator.hasPrevious()){
            orderStr.append(listIterator.previous()).append(" ");
            //orderStr.append(listIterator.previous()).append("\t");
        }
        System.out.println("orderStr : " + orderStr.substring(0,orderStr.length()-1));
    }

mian方法调用
输出结果

第二种实现方式

    这种方式比较简洁,直接使用jdk自带的工具类就OK了,具体代码如下:

public class TestReverseOrder(){
	public static void reverseOrderByList(String string){
		String[] s = string.split(" ");
        StringBuilder str = new StringBuilder();
        List<String> list = new ArrayList<>(Arrays.asList(s));
        Collections.reverse(list);
        System.out.println(list.toString());
        for (Object o : list) {
            str.append(o).append(" ");
            //str.append(o).append("\t");
        }
        System.out.println("str : " + str.substring(0,str.length()-1));
	} 
}

main方法输出结果

    其实查看Collections类的reverse方法源码你会发现其实它底层也是使用了ListIterator,先正序遍历移动游标,再逆序遍历。
collections的reverse方法
    so,文章到此就结束了,如果文章有不当和错误之处,欢迎指正,或者给我留言;如果您觉得文章对您有所帮助,就给我一个赞鼓励一下吧!
    转载请注明出处

  • 1
    点赞
  • 1
    评论
  • 8
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值