Java 在我的特定情况下,如何将此数组转换为列表?
我迭代了一个数组Java 在我的特定情况下,如何将此数组转换为列表?,java,arrays,loops,for-loop,arraylist,Java,Arrays,Loops,For Loop,Arraylist,我迭代了一个数组B。已检查arrayListA中是否存在公共元素。然后删除这些元素并将A作为数组打印出来 但我的问题是如何将A(在我的程序中是System.out.println(crIss.get(m));)打印为数组列表(只是没有[]括号的元素列表),而不是数组? 这是我正在处理的完整代码: package issuetracking; import java.util.*; public class IssueTrackingObject { ArrayList<Str
B
。已检查arrayListA
中是否存在公共元素。然后删除这些元素并将A
作为数组打印出来
但我的问题是如何将A
(在我的程序中是System.out.println(crIss.get(m));
)打印为数组列表(只是没有[]
括号的元素列表),而不是数组?
这是我正在处理的完整代码:
package issuetracking;
import java.util.*;
public class IssueTrackingObject {
ArrayList<String> crIss = new ArrayList<String>();
Scanner input = new Scanner(System.in);
boolean crIss_bool;
int numOfSolvedIss;
private String[] solvedIss;
//lets user create some issues and add them into an arrayList
public void createIssue() {
System.out.println("Enter 5 issues: ");
for (int i = 0; i < 5; i++) {
System.out.println("Issue " + (i + 1 + ": "));
crIss_bool = crIss.add(input.nextLine());
}
}
//Let user mark some issues as solved (which are already in the list that the user has just created)
public void solvedIssue() {
System.out.println("How many solved issue you have(Must be less than 5): ");
numOfSolvedIss = input.nextInt();
solvedIss = new String[numOfSolvedIss];
for (int k = 0; k < numOfSolvedIss; k++) {
System.out.print("Enter solved issue(REMEMBER THAT THE SOLVED ISSUE MUST BE FROM ONE OF THEM YOU ALREADY HAVE CREATED)no. " + (k + 1) + ": ");
solvedIss[k] = input.next();
}
}
public void printUnsolvedIssue() {
for(int m=0; m<solvedIss.length;m++){
crIss_bool = crIss.remove(solvedIss);
System.out.println(crIss.get(m));
}
}
public void printSolvedIssue() {
System.out.println("");
System.out.println("LIST OF SOLVED ISSUE:");
for (int l = 0; l < solvedIss.length; l++) {
System.out.printf("%s ", solvedIss[l]);
}
}
}
只需遍历
cris
并打印其中的每个项目,后跟所需的分隔符。在本例中,我将使用“,”分隔项目
public void printUnsolvedIssue(){
对于(int m=0;m您正在体验的打印行为是因为当您打印像ArrayList
这样的对象时,Java调用类的.toString()
方法。ArrayList.toString()
继承自AbstractCollection.toString()
可以找到的文档
我建议更改此行为,创建一个类似以下内容的sepreate Print函数:
public void printList(ArrayList<String> list)
{
for(String str : list)
{
System.out.print(str+" ");
}
System.out.println();
}
请注意,此打印将在一行上打印列表中的每个元素,并用空格分隔。有几种方法可以做到这一点。我将向您展示三种方法:
将数据存储在字符串中
并删除不需要的字符:
String tmp = crIss.toString();
tmp = tmp.substring(1, tmp.length() - 1);
System.out.println(tmp);
与上述方法类似,但使用替换:
String tmp = crIss.toString().replace('[', '\0').replace(']', '\0');
System.out.println(tmp);
遍历列表
并将值存储在StringBuilder
中:
StringBuilder sb = new StringBuilder();
for (String string : crIss) {
sb.append(string).append(", ");
}
sb.remove(sb.length() - 2, sb.length());
System.out.println(sb.toString());
你的问题有点让人困惑。你是想从数组中创建一个ArrayList
?还是想迭代现有数组并打印出元素?循环遍历它并在新行上打印数组中的每个项。是否允许使用其他库,如Apache Commons?如果是,有一个很好的方法叫做j在StringUtils
类中,oin
将为您完成困难的部分。printUnovervedIssue
看起来是错误的。m
是一个在solvedIss
中迭代的索引。m
在从中删除元素后,将用作cris
的索引。cris
中的索引将l与solvedIss
中的索引不匹配,因此结果是您将显示错误的元素。对于循环,您将需要第二个。@Riyana,您刚刚完全编辑了代码。一分钟前,它到处都使用数组-现在在一些地方使用ArrayList
。它应该是什么?它已经对于一个不断变化的问题,我很难写出正确的答案。这不是迭代列表
元素的好方法。请使用适当的迭代器或增强的for
循环。顺便说一下,这不包括OP想要/需要的内容:如何将a打印为arrayList(只是一个没有[]括号的元素列表)而不是数组?将其翻译给您(和其他读者):OP需要打印“1,2,3”
,而不是打印“1,2,3”
。您的代码打印“1\r\n2\r\n3\r\n
。请原谅,size()方法在这种情况下不起作用。@Riyana请看我上面的评论。您有一个循环,循环遍历solvedIss
,但使用相同的索引来获取cris
元素,这是错误的;这可能是您认为size()
不起作用的原因。
String tmp = crIss.toString();
tmp = tmp.substring(1, tmp.length() - 1);
System.out.println(tmp);
String tmp = crIss.toString().replace('[', '\0').replace(']', '\0');
System.out.println(tmp);
StringBuilder sb = new StringBuilder();
for (String string : crIss) {
sb.append(string).append(", ");
}
sb.remove(sb.length() - 2, sb.length());
System.out.println(sb.toString());