[英]Input in Char Array without Duplicates Java
想象一下,我有這個:
String input = "AB BC"; // ( Just an Example)
我想把這個String放到一個char數組中,但我想在我的char數組中沒有重復項和空白符號。 到目前為止我的解
String input = "AB BC"
char array[]=input.toCharArray();
for(int i=0;i<array.length;i++){
System.out.println("Data at ["+i+"]="+array[i]);
}
輸出是:
This is my input String AB BC
This is the content of my Char Array
Data at [0]=A
Data at [1]=B
Data at [2]=
Data at [3]=
Data at [4]=B
Data at [5]=C
Data at [6]=
所以現在我不知道如何刪除重復項和空白符號。
您可以使用LinkedHashSet<Character>
(以維護插入順序)。
replaceAll
方法替換空格 Set
(一個Set不允許重復) toArray(T[] object)
方法獲取Character
數組。 所以它會是這樣的:
String input = "AB BC";
input = input.replaceAll("\\s+", "");
Set<Character> s = new LinkedHashSet<>();
for(char c : input.toCharArray())
s.add(c);
Character [] array = s.toArray(new Character[0]);
System.out.println(Arrays.toString(array));
輸出:
[A, B, C]
如果你想擁有一個可以使用的原語數組(注意你必須使用apache commons庫) char[] arr = ArrayUtils.toPrimitive(array);
這是源代碼:
2647 public static char[] toPrimitive(Character[] array) {
2646 if (array == null) {
2647 return null;
2648 } else if (array.length == 0) {
2649 return EMPTY_CHAR_ARRAY;
2650 }
2651 final char[] result = new char[array.length];
2652 for (int i = 0; i < array.length; i++) {
2653 result[i] = array[i].charValue();
2654 }
2655 return result;
2656 }
將內容傳輸到LinkedHashSet
。 它將為您刪除重復項! 這是一個開始的例子 。
使用泛型character
Hashset
HashSet<Character> m=new HashSet<Character>();
您可以使用LinkedHashSet,但我假設您最后需要一個數組。 你可以這樣做。
String input = ...
StringBuilder sb = new StringBuilder();
BitSet seen = new BitSet(); // more compact than a HashSet<Character>
seen.set(' '); // pretend we have seen space already
for(char ch: input.toCharArray()) {
if(!seen.get(ch)) {
sb.append(ch);
seen.set(ch);
}
}
char[] unique = sb.toString().toCharArray();
這將只添加沒有任何空白的字符到hashset
char array[]=input.toCharArray();
Set<Character> m=new LinkedHashSet<Character>();
for(int i=0;i<array.length;i++){
if(array[i]!=' ')
m.add(array[i])
}
Character[] text = m.toArray(new Character[0]);
System.out.println(Arrays.toString(text))
你可以試試這個:
String input = "AB BC";
char array[]=input.toCharArray();
for(int i=0;i<array.length;i++){
if(!input.substring(0,i).contains(array[i]+"") && array[i]!=' ')
System.out.println("Data at ["+i+"]="+array[i]);
}
輸出:
Data at [0]=A
Data at [1]=B
Data at [5]=C
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.