删除括号[]和逗号的Java

问题描述 投票:0回答:3

我想作为排序依据学生的姓氏升序排列的列表,并显示列表中,但我想删除[,]认为返回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史密斯COP2250,COP3250,COP4250

20威尔逊WNC1105,ENC3250,REL2210

10 ENC1105布拉加,ENC3250,ISO4250

20亚当斯WNC1105,ENC3250,REL2210

60讨论这个P1210,这P3337,这P3530

45奥尼尔ENC1105,ENC3250,REL2210

40欧文ENC1105,COP3250,ISO4250

70伯恩COP2250,ENC3250,COP3530

[, , , , , , , , , ]

为什么我会收到这条线?

[, , , , , , , , , ]

谢谢你的帮助!

java list sorting arraylist brackets
3个回答
1
投票

当你做System.out.println(list);你只需要使用它在由逗号和空格分隔括号[]列表返回值ArrayList.toString()方法的默认实现。你有两个选择有:

  1. 通过你自己对列表进行迭代并单独打印每个学生(只要它有它的toString()方法实现。
  2. 或者你可以使用的replaceAll()的字符串现在从list.toString()

第一个选项是一般较好,因为通常情况下"[" "]" ", "可以是列表元素中的有效字符,并且不得更换。但是,对于小的情况下,当你确信不会有这样的人物在Student name, id or course你可以做到这一点。


0
投票

当您使用您正在使用的列表的默认实现打印的东西到控制台System.out.println(list)

在列表中的默认实现迭代,并调用每一个对象的toString。这是覆盖在你的学生类,函数是个好主意。但是,你只是“回”。默认的实现创建了一个新的String。它以一个“[”。它随后将清单内的每个对象的toString方法的返回值(由分隔“”)。它以“]”结束。你的toString方法返回一个空字符串“”。这意味着默认的实现将创建下列:

[, , , , , , , , , ]

现在你可以改变你的toString方法的返回值:

public String toString() {
   return "" + id + name + course ;
}

比你会得到下面的输出:

[50 Gracia的COP2250,COP3250,COP4250,30琼斯COP1210,COP3337,COP3530,10史密斯COP2250,COP3250,COP4250,20威尔逊WNC1105,ENC3250,REL2210,10布拉加ENC1105,ENC3250,ISO4250,20亚当斯WNC1105,ENC3250,REL2210,60 Giron的COP1210,COP3337,COP3530,45奥尼尔ENC1105,ENC3250,REL2210,40欧文ENC1105,COP3250,ISO4250,70伯恩COP2250,ENC3250,COP3530]

如果你不希望有commatars和支架,你可以写自己的列表,从ArrayList中延伸,或者你迭代,而不是打印出来在你的名单。

   for(Student s : list){
       System.out.println(s);
   }

然后,你将得到以下的输出:

50格雷斯COP2250,COP3250,COP4250

30琼斯COP1210,COP3337,COP3530

10史密斯COP2250,COP3250,COP4250

20威尔逊WNC1105,ENC3250,REL2210

10 ENC1105布拉加,ENC3250,ISO4250

20亚当斯WNC1105,ENC3250,REL2210

60讨论这个P1210,这P3337,这P3530

45奥尼尔ENC1105,ENC3250,REL2210

40欧文ENC1105,COP3250,ISO4250

70伯恩COP2250,ENC3250,COP3530


0
投票

如果你不希望看到的方括号列出你的名单的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()方法不正确。你应该为一个字符串被返回的数据,而不是显示它。你的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, REL2210
© www.soinside.com 2019 - 2024. All rights reserved.