我试图按学生姓氏按升序对列表进行排序,并显示列表,但我想删除返回null的。有没有办法让我看不出来。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class StudentTest {
public static void main(String args[]) {
List<Student> list = new ArrayList<Student>();
list.add(new Student(" Gracia", "50","\tCOP2250, COP3250, COP4250"));
list.add(new Student(" Jones", "30", "\tCOP1210, COP3337, COP3530"));
list.add(new Student(" Smith", "10", "\tCOP2250, COP3250, COP4250"));
list.add(new Student(" Wilson", "20", "\tWNC1105, ENC3250, REL2210"));
list.add(new Student(" Braga", "10", "\tENC1105, ENC3250, ISO4250"));
list.add(new Student(" Adams", "20", "\tWNC1105, ENC3250, REL2210"));
list.add(new Student(" Giron", "60","\tCOP1210, COP3337, COP3530"));
list.add(new Student(" O'Neal", "45","\tENC1105, ENC3250, REL2210"));
list.add(new Student(" Ervin", "40", "\tENC1105, COP3250, ISO4250"));
list.add(new Student(" Bourne", "70","\tCOP2250, ENC3250, COP3530"));
System.out.println(list);
Collections.sort(list);
System.out.println(list);
}
}
class Student implements Comparable<Student> {
public Student(String name, String id, String course) {
this.name = name;
this.id = id;
this.course = course;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCourse() {
return course;
}
public Student(String course) {
this.course = course;
}
private String name;
private String id;
private String course;
@Override
public int compareTo(Student student) {
return name.compareTo(student.name);
}
@Override
public String toString() {
System.out.println("" + id + name + course );
return "";
}
}输出如下:
10 Smith COP2250,COP3250,COP4250 20 Wilson WNC1105,ENC3250,REL2210 10 Braga ENC1105,ENC3250,ISO4250 20 Adams WNC1105,ENC3250,REL2210 60 Giron COP1210,COP3337,COP3530 45 O‘’Neal ENC1105,ENC3250,REL2210 40 Ervin ENC1105,COP3250,ISO4250 70 Bourne COP2250,ENC3250,COP3530 .
我为什么要接这条线?
.
谢谢你的帮忙!
发布于 2017-01-21 19:54:07
在执行System.out.println(list);时,只需使用ArrayList.toString()方法的默认实现,它将返回[]括号中由逗号和空格分隔的列表中的值。你在那里有两个选择:
toString()方法实现即可。list.toString()获得的字符串第一个选项在一般情况下是比较可取的,因为对于普通情况,"[" "]" ", "可以是列表元素中的有效字符,不能被替换。但是,在小情况下,当您确信Student name, id or course中没有这样的字符时,您可以这样做。
发布于 2017-01-21 19:59:51
使用System.out.println(list)时,您将使用列表的默认实现将某些内容打印到控制台。
默认实现迭代列表并调用每个对象的toString。在你们学生班重写这个函数是个好主意。但你只是回来了“。默认实现将创建一个新字符串。从"“开始。它后面跟着列表中每个对象的toString方法的返回值(由",“分隔)。它以"“结尾。toString方法返回一个空字符串"“。这意味着默认实现将创建以下内容:
.
现在可以更改toString方法的返回值:
public String toString() {
return "" + id + name + course ;
}您将得到以下输出:
50 Gracia COP2250,COP3250,COP4250,30 Jones COP1210,COP3337,COP3530,10 Smith COP2250,COP3250,COP4250,20 Wilson WNC1105,ENC3250,REL2210,10 Braga ENC1105,ENC3250,ISO4250,20 Adams WNC1105,ENC3250,REL2210,60 Giron ISO4250,45 O‘’Neal,40 Ervin,70 Bourne,,
如果不想使用逗号和括号,可以编写自己的列表(从ArrayList扩展),或者迭代列表,而不是打印它。
for(Student s : list){
System.out.println(s);
}然后,您将得到以下输出:
50 Gracia COP2250,COP3250,COP4250 Jones COP1210,COP3337,COP3530 30 10 Smith COP2250,COP3250,COP4250 20 Wilson WNC1105,ENC3250,REL2210 10 Braga ENC1105,ENC3250,ISO4250 20 Adams WNC1105,ENC3250,REL2210 60 Giron COP1210,COP3337,COP3530 45 O‘’Neal ENC1105,ENC3250,REL2210 40 Ervin ENC1105,COP3250,ISO4250 70 Bourne COP2250,ENC3250,COP3530
发布于 2017-01-21 20:15:47
如果您不想在列出list ArrayList数组时看到方括号,那么不要只使用:
System.out.println(list);您应该遍历数组,以便以您想要的方式处理每个数组元素,例如:
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}现在没有方括号了。
您的main()方法代码应该如下所示:
public static void main(String args[]) {
List<Student> list = new ArrayList<>();
list.add(new Student(" Gracia", "50", "\tCOP2250, COP3250, COP4250"));
list.add(new Student(" Jones", "30", "\tCOP1210, COP3337, COP3530"));
list.add(new Student(" Smith", "10", "\tCOP2250, COP3250, COP4250"));
list.add(new Student(" Wilson", "20", "\tWNC1105, ENC3250, REL2210"));
list.add(new Student(" Braga", "10", "\tENC1105, ENC3250, ISO4250"));
list.add(new Student(" Adams", "20", "\tWNC1105, ENC3250, REL2210"));
list.add(new Student(" Giron", "60", "\tCOP1210, COP3337, COP3530"));
list.add(new Student(" O'Neal", "45", "\tENC1105, ENC3250, REL2210"));
list.add(new Student(" Ervin", "40", "\tENC1105, COP3250, ISO4250"));
list.add(new Student(" Bourne", "70", "\tCOP2250, ENC3250, COP3530"));
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
Collections.sort(list);
System.out.println("");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}现在,正如@Leon已经在他的评论中指出的那样,您在学生类中错误地设置了您的方法。您应该以字符串形式返回数据,而不是显示它。toString()方法应该如下所示:
@Override
public String toString() {
return id + name + course;
}这应该能解决问题。您的输出应该如下所示:
50 Gracia COP2250, COP3250, COP4250
30 Jones COP1210, COP3337, COP3530
10 Smith COP2250, COP3250, COP4250
20 Wilson WNC1105, ENC3250, REL2210
10 Braga ENC1105, ENC3250, ISO4250
20 Adams WNC1105, ENC3250, REL2210
60 Giron COP1210, COP3337, COP3530
45 O'Neal ENC1105, ENC3250, REL2210
40 Ervin ENC1105, COP3250, ISO4250
70 Bourne COP2250, ENC3250, COP3530
20 Adams WNC1105, ENC3250, REL2210
70 Bourne COP2250, ENC3250, COP3530
10 Braga ENC1105, ENC3250, ISO4250
40 Ervin ENC1105, COP3250, ISO4250
60 Giron COP1210, COP3337, COP3530
50 Gracia COP2250, COP3250, COP4250
30 Jones COP1210, COP3337, COP3530
45 O'Neal ENC1105, ENC3250, REL2210
10 Smith COP2250, COP3250, COP4250
20 Wilson WNC1105, ENC3250, REL2210https://stackoverflow.com/questions/41783669
复制相似问题