当前位置:编程学习 > JAVA >>

初学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对应起来就可以了。

上个帖子你没结吧? --------------------编程问答--------------------
引用 6 楼 softroad 的回复:
list索引和id对应起来就可以了。

上个帖子你没结吧?

就算最初的ID的索引是对应的。
假如在List中间删除了一条数据,此时List索引会发生变化重新排列数组的顺序,而此时ID却是没有办法改变的。 --------------------编程问答--------------------
引用 6 楼 softroad 的回复:
list索引和id对应起来就可以了。

上个帖子你没结吧?

   那如果你删除的不是最后一个,还是前面的,那list底层不是会把里面的元素向下移动嘛!
  那如果执行第二次删除,对应的ID不是乱了? --------------------编程问答-------------------- List l=new ArrayList();
l.Add(new Object());
l.Add(new Object());
l.Add(new Object());
l.Remove(2); --------------------编程问答--------------------
引用 1 楼 fainfy 的回复:
抱歉默认List的实现删除是根据索引来的,无法根据你特定的属性来进行删除。

想要根据指定的键删除,可以用Map嘛。


换种实现 :可以遍历输出对象得到对象的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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,