在 Java 中的主要方法和其他方法中打印和使用数组列表

Printing and using arraylists in main and other methods in Java

所以我主要关心的是如何轻松地在数组列表中找到某些值,例如,如果我有一个充满名称的数组列表,我如何轻松地删除它?打印和比较 arraylist "studeranden" 并没有给出它包含的真实值,而是(我认为)取值的位置,例如“[Mom1$studs@bebdb06]”。我怎样才能绕过这个?

    JOptionPane.showMessageDialog(null, x + " togs bort från listan");
}
//else JOptionPane.showInputDialog(null, x + " hittades inte i listan");




public static class studs {
    String name;
    String matrik;
    String data;
    String x;
    studs (String namn) {
        data = namn;
        String[] parts = data.split(",");
        name = parts[0];
        matrik = parts[1];
    }

    String getstud() {
        x = name + matrik;
        return x;
    }}

}

int xx = n_studeranden.indexOf(x);

这失败了,因为列表不包含字符串对象,而是包含 studs 对象。您需要遍历列表,将 x 字符串与每个螺柱的名称进行比较。您可以使用 ListIterator 删除找到的元素。

ListIterator<studs> it = studeranden.listIterator();
boolean end = false;
while (it.hasNext() && !end) {
    if (it.next().getName().equals(x)) {
        it.remove();
        end = true;
    }
}

List<String> names = ...;

names.remove( "Anton" )

是您所需要的一切。你甚至可以

if( names.remove( "Anton" ) ){
    System.out.println( "Anton could be removed" );
} else {
    System.out.println( "Anton doesn't study here" );
}

如果您有对象列表,则在迭代列表时必须编写一些代码来识别对象:

for( int i = 0; i < students.size(); ++i ){
    Student s = students.get( i );
    if( "Anton".equals( s.getName() ) ){
        students.delete( i );
        break;
    }
}

要打印所有学生,使用类似的循环或:

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

但请确保您的学生 class 包含一个方法

public String toString(){
    return this.getName(); // append more data
}

如果你有这个方法,你甚至可以

System.out.println( students );

尽管这样的安排(全部排成一行)可能不会令您满意。

int xx = n_studeranden.indexOf(x)

问题: n_studeranden 包含螺柱类型的对象。您正在寻找字符串的索引。


System.out.println(n_studeranden);

问题:如果要打印ArrayList的内容,遍历它并打印每个元素的单独名称。


可能的解决方案: 如 Paco 所说,您可以遍历每个元素并检查名称是否匹配。但是,我认为在这里使用不同的数据结构会更整洁。例如,螺柱名称到螺柱对象的映射,这样您就可以通过名称轻松访问各个螺柱