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;