初学list,求教!!!
我想请问一下如何使用list来删除对位的id如下:Enter choice (or ?): qwert?
The menu choices are
R: Register
D: Delete
B: Buy shares
S: Sell shares
C: Show codes
T: Show top stocks
V: Show current value
?: Show choices
X: Exit
Enter choice (or ?): x
Enter choice (or ?): Register
Your name: mary
Amount to trade: $1000
mary 1 has $1000.00
The current ids are 1
Enter choice (or ?): r
Your name: anne
Amount to trade: $2000
anne 2 has $2000.00
The current ids are 1 2
Enter choice (or ?): r
Your name: kate
Amount to trade: $3000
kate 3 has $3000.00
The current ids are 1 2 3
Enter choice (or ?): del
Your id: 2
The current ids are 1 3
--------------------编程问答--------------------
抱歉默认List的实现删除是根据索引来的,无法根据你特定的属性来进行删除。
想要根据指定的键删除,可以用Map嘛。 --------------------编程问答-------------------- List l=new ArrayList();
l.Add(new Object());
l.Add(new Object());
l.Add(new Object());
l.Remove(2); --------------------编程问答-------------------- 循环List,判断是否有元素等于your id,相等则移出。 --------------------编程问答-------------------- 看了下,这个最后就用map来实现了,或者用一个对象,一个id,一个list对象。要么就只能用循环了 --------------------编程问答-------------------- 循环遍历。。。。 --------------------编程问答-------------------- list索引和id对应起来就可以了。
上个帖子你没结吧? --------------------编程问答--------------------
就算最初的ID的索引是对应的。
假如在List中间删除了一条数据,此时List索引会发生变化重新排列数组的顺序,而此时ID却是没有办法改变的。 --------------------编程问答--------------------
那如果你删除的不是最后一个,还是前面的,那list底层不是会把里面的元素向下移动嘛!
那如果执行第二次删除,对应的ID不是乱了? --------------------编程问答-------------------- List l=new ArrayList();
l.Add(new Object());
l.Add(new Object());
l.Add(new Object());
l.Remove(2); --------------------编程问答--------------------
换种实现 :可以遍历输出对象得到对象的id属性,如果id相同,标记(marker)该对象的下标传入list.remove(marker)就ok了。
代码提供:
public void testRemove(){
List<User> list = new ArrayList<User>();
//向list中加入几个User对象user中有id,和password字段(属性)
list.add(new User(1,"123123"));
list.add(new User(2,"123123"));
list.add(new User(4,"123123"));
list.add(new User(6,"123123"));
//这个方法就实现了传入一个id删除对应的user对象
remove(list,6);
}
public boolean remove(List<User> list,int id){
Iterator<User> iter = list.iterator();
while(iter.hasNext()){
User user = iter.next();
if(id == user.getId()){
//如果属性相同就删除
return list.remove(user);
}
}
return false;
}
--------------------编程问答-------------------- 学习、、、、 --------------------编程问答-------------------- 结贴率太低~~
补充:Java , Java SE