package com.removesamestring;
import java.io.BufferedWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; public class Removesamestring { public static void main(String[] args) {
String text = "test test text text remove remove string string";
System.out.println("strWay1:"+strWay1(text));
System.out.println("strWay2:"+strWay2(text));
}
//方法一
public static String strWay1(String text) {
String[] str = text.split(" ");
if(str.length == 0) {
return null;
}
List<String> list = new ArrayList<String>();
StringBuffer sb = new StringBuffer();
for(int i = 0;i < str.length; i++) {
if(!list.contains(str[i])){
list.add(str[i]);
sb.append(str[i]+" ");
}
}
return sb.toString().substring(0,sb.toString().length()-1);
}
//方法二
public static String strWay2(String text) {
String[] str = text.split(" ");
ArrayList<String> as = new ArrayList<>();
f:for(int i = 0; i < str.length;i++) {
for(int j = 0; j < as.size();j++ ) {
if(str[i].equals(as.get(j))) {
continue f;//里层的循环continue直接跳出外层循环,继续执行外层循环
}
}
as.add(str[i]);
}
StringBuffer buffer = new StringBuffer();
for(String string : as) {
buffer.append(string+" ");
}
return buffer.toString().substring(0,buffer.toString().lastIndexOf(" "));
}
}

在学习的过程中,又发现了一个新的知识点,java 中的冒号(:),可以这么来用:用作跳转标记。解释如图中红色注释。
下面来回忆一下另外三种用法:

  • 其一: 用来遍历

    String[] abc = new String[3]{"a","b","c"};
    for (String str : abc){
    System.out.println(str); //这个地方的冒号就是遍历abc的集合,取出每一个元素
  • 其二: 三元运算符   Boolean ? true的内容:false的内容

    int a=1;
    int b=3;
    int i = a>b?3:1;//这个地方的冒号用来选择值,如果a大于b,那么i=3(true),否则i=1(false)
  • 其三:  switch选择

    .....
    switch (i) {
    case "AUS":
    URL= GetComposedParameters("globalfund", "AUS", "no", "no", "en-AU", "A4","");
    break;
    case "GFRP1":
    URL= GetComposedParameters("globalfundp1", "", "no", "no", "en-GB", "A4","");
    break;
    case "NZ":
    URL= GetComposedParameters("globalfund", "NZ", "no", "no", "en-NZ", "A4","");
    break;
    }
    return URL;

  //用于switch选择,当i等于下面的值事,执行后面的操作,然后break跳出; 如果没有break,那么将执行下面的oprate操作,一直到底!

Java去重字符串的两种方法以及java中冒号的使用的更多相关文章

  1. 【java基础 13】两种方法判断hashmap中是否形成环形链表

    导读:额,我介绍的这两种方法,有点蠢啊,小打小闹的那种,后来我查了查资料,别人都起了好高大上的名字,不过,本篇博客,我还是用何下下的风格来写.两种方法,一种是丢手绢法,另外一种,是迷路法. 这两种方法 ...

  2. 在PHP代码中处理JSON 格式的字符串的两种方法:

    总结: 在PHP代码中处理JSON 格式的字符串的两种方法: 方法一: $json= '[{"id":"1","name":"\u ...

  3. JAVA写JSON的三种方法,java对象转json数据

    JAVA写JSON的三种方法,java对象转json数据 转自:http://www.xdx97.com/#/single?bid=5afe2ff9-8cd1-67cf-e7bc-437b74c07a ...

  4. 实验04——java保留小数的两种方法、字符串转数值

    package cn.tedu.demo; import java.text.DecimalFormat; /** * @author 赵瑞鑫 E-mail:1922250303@qq.com * @ ...

  5. Java 创建线程的两种方法

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  6. java动态代理的两种方法

    动态代理,有两种情况,第一种是有接口的情况下,你可以选择为jdk自带的动态代理的方式来编写程序,但你想要为一个实在的类编写动态代理的方式的话,这时候就必须选择一些开源的lib包,如cglib包,同时还 ...

  7. Java创建线程的两种方法

    大多数情况,通过实例化一个Thread对象来创建一个线程.Java定义了两种方式: 实现Runnable 接口: 可以继承Thread类. 下面的两小节依次介绍了每一种方式. 实现Runnable接口 ...

  8. java打印等腰三角形的两种方法!(根据行数,根据底边长度)

    首先来看根据用户输入的底边的长度判断: package cn.edu.nwpu.java; import java.util.Scanner; public class IsoscelesTriang ...

  9. java web 读取配置文件两种方法

    package com.tsinghua.getDataBaseConn; import java.io.IOException;import java.io.InputStream;import j ...

随机推荐

  1. bzoj 2456: mode ——独特水法

    Description 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数. Input 第1行一个正整数n.第2行n个正整数用空格隔开. Output 一行一个正整数表 ...

  2. Ubuntu 13.04 主机名的修改

    由于某些原因,要修改Ubuntu的主机名,晚上Google了一下,要改的地方为/etc/hostname,即将里面的字符串替换为你要起的主机名即可. sudo vi /etc/hostname 修改即 ...

  3. 对string 的操作

    相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...

  4. 在linux上安装完oracle数据库后,如何修改ORACLE_HOSTNAME

    1.修改HOSTS文件,添加node2到本机IP地址的映射: [root@node2home]# gedit /etc/hosts 最后一行为添加的: 127.0.0.1 localhost loca ...

  5. ntpdate[35450]: the NTP socket is in use, exiting

    当前主机已是NTP服务器,需关闭当前NTP服务,再同步其他NTP服务器的时间 service ntpd stop 然后ps -ef | grep ntp看进程是否已杀掉 然后再次ntpdate Ser ...

  6. C++学习之路(十一):C++的初始化列表

    结论: 1.在C++中,成员变量的初始化顺序与变量在类型中的声明顺序相同,而与他们在构造函数的初始化列表中的顺序无关. 2.构造函数分为两个阶段执行:1)初始化阶段:2)普通的计算阶段,表现为赋值操作 ...

  7. aarch64_m3

    mrpt-stereo-camera-calibration-1.4.0-1.fc26.aarch64.rpm 2017-03-17 10:02 143K fedora Mirroring Proje ...

  8. MySQL增量备份与恢复实例【转】

    小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的 ...

  9. 2->集群架构主机优化流程

    集群架构优化流程: 有道笔记分享链接

  10. 十一、springcloud之链路追踪Sleuth

    一.背景 随着微服务的数量增长,一个业务接口涉及到多个微服务的交互,在出错的情况下怎么能够快速的定位错误 二.简介 Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案, ...