在 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 所说,您可以遍历每个元素并检查名称是否匹配。但是,我认为在这里使用不同的数据结构会更整洁。例如,螺柱名称到螺柱对象的映射,这样您就可以通过名称轻松访问各个螺柱
所以我主要关心的是如何轻松地在数组列表中找到某些值,例如,如果我有一个充满名称的数组列表,我如何轻松地删除它?打印和比较 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 所说,您可以遍历每个元素并检查名称是否匹配。但是,我认为在这里使用不同的数据结构会更整洁。例如,螺柱名称到螺柱对象的映射,这样您就可以通过名称轻松访问各个螺柱