想象一下,我有这个:
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]=
所以现在我不知道如何删除重复项和空白符号。
答案 0 :(得分:1)
您可以使用LinkedHashSet<Character>
(以维持广告订单顺序)。
replaceAll
方法替换空格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 }
答案 1 :(得分:1)
将内容转移到LinkedHashSet
。它将为您删除重复项!
这是一个example开始。
答案 2 :(得分:0)
使用通用类型Hashset
character
HashSet<Character> m=new HashSet<Character>();
答案 3 :(得分:0)
您可以使用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();
答案 4 :(得分:0)
这将只添加没有任何空白的字符到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))
答案 5 :(得分:0)
您可以试试这个:
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