我正在使用对象的Arraylist。 虽然我已经成功地删除了Arraylist中的值,但它们是数字。
我遇到了字符串时从arraylist中删除的问题 这是一个例子:
public class ArrayListDemo {
public static void main(String[] args) {
// create an empty array list with an initial capacity
ArrayList<Namer> arrlist = new ArrayList<Namer>( );
// use add() method to add values in the list
arrlist.add(new Namer("1","A","G"));
arrlist.add(new Namer("2","E","G"));
arrlist.add(new Namer("3","F","G"));
System.out.println("Size of list: " + arrlist.size());
// let us print all the values available in list
for (Namer value : arrlist) {
System.out.println("age = " + value.age);
}
arrlist.remove("3");
System.out.println("Now, Size of list: " + arrlist.size());
for (Namer value : arrlist) {
System.out.println("age = " + value.age); //System.out.println("Value = " + value);
}
}
}
并且运行它的结果证明它没有删除特定行 我需要删除if是否使用String并且不能使用数字作为&#34; Key&#34;
Size of list: 3
age = 1
age = 2
age = 3
Now, Size of list: 3
age = 1
age = 2
age = 3
我可以使用String来删除它吗?
如果有帮助
这是arrayList
的对象public class Namer
{
// instance variables - replace the example below with your own
public String age;
public String name;
public String L_name;
public Namer(String a, String na , String Lname)
{
// initialise instance variables
age =a;
name=na;
L_name=Lname;
}
}
答案 0 :(得分:6)
Namer
中有ArrayList
个对象,而不是String
。当您致电remove("3")
时,ArrayList
会在true
上调用equals
时查找返回"3"
的对象。当然,没有String
会将equals
与任何Namer
进行比较。
您必须自己与name
字段进行比较,并删除相应的项目。这可以使用Iterator
及其remove
方法完成。
答案 1 :(得分:2)
你必须使用对象或索引删除,你没有使用... 试试这段代码:
arrlist.remove(2);
或
// create an empty array list with an initial capacity
ArrayList<Namer> arrlist = new ArrayList<Namer>( );
Namer namer1= new Namer("1","A","G");
Namer namer2= new Namer("2","E","G");
Namer namer3= new Namer("3","F","G");
// use add() method to add values in the list
arrlist.add(namer1);
arrlist.add(namer2);
arrlist.add(namer3);
arrlist.remove(namer3);
答案 2 :(得分:0)
方法arrlist.remove(idx)
将要从数组中删除的元素的(整数)索引作为参数。 ArrayLists
没有“钥匙”这样的东西。
您可能想要使用java.util.Map<Integer,Namer>
。