Java 我想得到组成字符串的字符。例如,如果我有str=aabbc,那么答案是abc
这是我写的函数。它获取一个Stringbuffer文本,然后分配Java 我想得到组成字符串的字符。例如,如果我有str=aabbc,那么答案是abc,java,vector,Java,Vector,这是我写的函数。它获取一个Stringbuffer文本,然后分配v[0]=text[0],然后从text[1]>>text[n-1]开始比较。向量v应包含字符。我不知道问题出在哪里。你能帮我吗 public void setdirectory(StringBuffer text) { String temp; boolean t; v.add(0,String.valueOf(text.charAt(0))); //A[0]=first
v[0]=text[0]
,然后从text[1]>>text[n-1]
开始比较。向量v
应包含字符。我不知道问题出在哪里。你能帮我吗
public void setdirectory(StringBuffer text)
{
String temp;
boolean t;
v.add(0,String.valueOf(text.charAt(0))); //A[0]=first letter in text.
for(int i=1;i<text.length();++i)
{
temp=String.valueOf(text.charAt(i));
try{
for(int j=0;j<v.capacity();++j)
{
if(!temp.equals(v.elementAt(j)))
{
v.add(i,temp);
}
v.trimToSize();
}
// System.out.println(v.capacity());
}catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("usage error");
}
}
}
public void setdirectory(StringBuffer文本)
{
字符串温度;
布尔t;
v、 添加(0,String.valueOf(text.charAt(0));//A[0]=文本中的第一个字母。
对于(inti=1;i如果您使用的是Java8+,那么使用新的流API可能会更简单
String str = "aabbc";
StringBuilder sb = new StringBuilder(str.length());
str.chars().distinct().forEach(c -> sb.append((char)c));
System.out.println(sb.toString());
哪张照片
abc
我会编写一个函数来获取唯一的字符,并且假设您需要保留插入顺序,我会使用一个,我更喜欢StringBuilder
,而不是StringBuffer
static String getUniqueCharacters(String text) {
Set<Character> set = new LinkedHashSet<>();
for (char ch : text.toCharArray()) {
set.add(ch);
}
StringBuilder sb = new StringBuilder();
for (char ch : set) {
sb.append(ch);
}
return sb.toString();
}
静态字符串getUniqueCharacters(字符串文本){
Set Set=newlinkedhashset();
for(char ch:text.toCharArray()){
集合。添加(ch);
}
StringBuilder sb=新的StringBuilder();
for(字符通道:集合){
某人附加(ch);
}
使某人返回字符串();
}
您需要跟踪在向量中添加值的位置。此外,向量中的对象数是size(),而不是capacity()(在API中查找两者;capacity()显示当前已填充和可填充的“空格”数,在向量需要展开之前,它不显示实际已填充的空间数)
Doh,代码不起作用的第三个原因是:每次在向量中发现不匹配的字符时,您都在添加字符(每次都重写自身,因此您只能看到最后一次添加)
public void setdirectory(StringBuffer text){
字符串温度;
布尔t;
int addAt=0;
v、 add(addAt,String.valueOf(text.charAt(0));//A[0]=文本中的第一个字母。
对于(int i=1;i而言,另一种Java 8解决方案是:
String str = "aabbc";
String str2 = str.chars().distinct().mapToObj(j->""+(char)j).collect(Collectors.joining());
System.out.println(str2);
在幕后,这与这里的其他答案类似,因为IntStream::distinct
是使用LinkedHashSet
实现的,而join
使用StringBuilder
将String
分解为char
数组,将所有元素添加到某种Set
中,获取每个独立的元素alchar
返回并重新组合字符串
@KickButtowski是的,它把我拖上来,发出尖叫;)
String str = "aabbc";
String str2 = str.chars().distinct().mapToObj(j->""+(char)j).collect(Collectors.joining());
System.out.println(str2);