Java ArrayList<;字符串>;始终生成字符[],而不是字符串。我怎样才能修好它?
我想写一个方法,将字符串作为参数,并生成字符串的arraylist,这些字符串是给定字符串中包含的单词。例如,字符串“I go to Mars”应转换为Arraylist[“I”、“go”、“to”、“Mars”]。代码如下:Java ArrayList<;字符串>;始终生成字符[],而不是字符串。我怎样才能修好它?,java,string,arraylist,Java,String,Arraylist,我想写一个方法,将字符串作为参数,并生成字符串的arraylist,这些字符串是给定字符串中包含的单词。例如,字符串“I go to Mars”应转换为Arraylist[“I”、“go”、“to”、“Mars”]。代码如下: static ArrayList getWords(String str){ ArrayList charArr=新的ArrayList(); ArrayList strArr=新的ArrayList(); char[]chArr=str.toCharArray(); f
static ArrayList getWords(String str){
ArrayList charArr=新的ArrayList();
ArrayList strArr=新的ArrayList();
char[]chArr=str.toCharArray();
for(字符i:chArr){
如果(((int)i)!=32){
添加(i);
}
否则{
strArr.add(charArr.toString());
charArr.clear();
}
}
如果(!charArr.isEmpty())strArr.add(charArr.toString());
返回斯特拉尔;
}
问题是,我得到的不是所需的字符串数组,而是一个字符数组。
预期产出:
[“我”、“去”、“去”、“火星”]
实际产量:
[I],[g,o],[t,o],[M,a,r,s]
我也无法将这些字符数组转换为字符串,我试图通过
String String=新字符串(getWords(str).get(1));
我怎样才能解决这个问题?最好使用getWords方法。这可以通过
String.split()
方法轻松完成:
public static List<String> getWords(String str){
String[] strArray=str.split(" ");
List<String> listStr = new ArrayList<String>();
for(String strInArray : strArray){
listStr.add(strInArray);
}
return listStr;
}
公共静态列表getWords(String str){
字符串[]strArray=str.split(“”);
List listStr=new ArrayList();
用于(字符串strInArray:strArray){
listStr.add(strInArray);
}
返回listStr;
}
以下是Geeksforgeks网站,该网站通过示例详细解释了
split
方法。使用String.split()
方法可以很容易地做到这一点:
public static List<String> getWords(String str){
String[] strArray=str.split(" ");
List<String> listStr = new ArrayList<String>();
for(String strInArray : strArray){
listStr.add(strInArray);
}
return listStr;
}
公共静态列表getWords(String str){
字符串[]strArray=str.split(“”);
List listStr=new ArrayList();
用于(字符串strInArray:strArray){
listStr.add(strInArray);
}
返回listStr;
}
以下是Geeksforgeks网站,该网站通过示例解释了有关拆分方法的更多信息。这可以通过如下更改方法实现:
static List<String> getWords(String str){
String[] splitValue = str.split(" ");
return Arrays.asList(splitValue);
}
这可以通过如下更改您的方法来实现
static List<String> getWords(String str){
String[] splitValue = str.split(" ");
return Arrays.asList(splitValue);
}
您的代码生成的字符串是
ArrayList
的字符串版本,因为您使用的是它的。这不会将字符转换为字符串,而是返回列表的字符串表示形式
当然,你可以,但我想这是一种锻炼
如果要将数组列表
转换为字符串
,这是因为列表包含字符
对象,而不是字符
对象。您最好只使用chArr
和索引,根本不需要ArrayList
:
static ArrayList<String> getWords(String str){
ArrayList<String> strArr = new ArrayList<String>();
char[] chArr = str.toCharArray();
int lastIndex = 0;
for (int i = 0; i <= chArr.length; ++i) {
// ^^---- Note the unusual end condition
if (i == chArr.length || chArr[i] == ' ') {
// ^^^^^^^^^^^^^^^^^--- note the test to avoid doing `chArr[i]` when past the end
strArr.add(new String(chArr, lastIndex, i - lastIndex));
lastIndex = i + 1;
}
}
return strArr;
}
static ArrayList getWords(String str){
ArrayList strArr=新的ArrayList();
char[]chArr=str.toCharArray();
int lastIndex=0;
对于(int i=0;i您的代码生成的字符串是ArrayList
的字符串版本,因为您使用的是its。这不会将字符转换为字符串,而是返回列表的字符串表示形式
当然,你可以,但我想这是一种锻炼
如果您想将ArrayList
转换为String
,这是因为列表包含Character
对象,而不是char
s。您最好只使用chArr
和索引,根本不需要ArrayList
:
static ArrayList<String> getWords(String str){
ArrayList<String> strArr = new ArrayList<String>();
char[] chArr = str.toCharArray();
int lastIndex = 0;
for (int i = 0; i <= chArr.length; ++i) {
// ^^---- Note the unusual end condition
if (i == chArr.length || chArr[i] == ' ') {
// ^^^^^^^^^^^^^^^^^--- note the test to avoid doing `chArr[i]` when past the end
strArr.add(new String(chArr, lastIndex, i - lastIndex));
lastIndex = i + 1;
}
}
return strArr;
}
static ArrayList getWords(String str){
ArrayList strArr=新的ArrayList();
char[]chArr=str.toCharArray();
int lastIndex=0;
对于(int i=0;i),该代码清楚地创建了String
s的ArrayList
,而不是char[]的ArrayList
()是什么让你认为它做了后者?代码没有做你所说的你希望它做的事情,但它没有产生错误的数据类型。要回答你的问题,请阅读List.toString()的javadoc。它不会连接它包含的所有字符以返回字符串。它生成的字符串是ArrayList
的字符串版本,因为您使用它的toString
。这不会将字符转换为字符串,而是返回列表的字符串表示形式。该代码显然创建了ArrayList
对于String
s,而不是char[]
的ArrayList
(),是什么让你认为它做了后者?代码没有做你所说的你想让它做的,但它不会产生错误的数据类型。要回答你的问题,请阅读List.toString()的javadoc。它不会连接它包含的所有字符以返回字符串。它生成的字符串是ArrayList
的字符串版本,因为您正在使用它的toString
。如果不将字符转换为字符串,它将返回列表的字符串表示形式。