Java 已从数组列表中删除始终最后的元素
这是我的代码:Java 已从数组列表中删除始终最后的元素,java,arraylist,Java,Arraylist,这是我的代码: for (int i=0; i<mListOfItemsToDelete.size(); i++) { receivedMessages.remove(mListOfItemsToDelete.get(i).intValue()); Log.e("position:", mListOfItemsToDelete.get(i).toString()); } mListOfItemsToDelete
for (int i=0; i<mListOfItemsToDelete.size(); i++) {
receivedMessages.remove(mListOfItemsToDelete.get(i).intValue());
Log.e("position:", mListOfItemsToDelete.get(i).toString());
}
mListOfItemsToDelete.clear();
和我的日志(我选择索引为1和2的项目-我的ArrayList
有5个元素,索引为0-4):
请注意,arrayOUT
位于我调用上述方法的位置下方一处
它从ArrayList
中正确删除,但为什么我的ListView
总是删除最后一个元素 试试这个:
receivedMessages.remove(mListOfItemsToDelete[i]) 试试这个:
receivedMessages.remove(mListOfItemsToDelete[i])
对我来说,这很有效:
ArrayList some_data=new ArrayList();
ArrayList索引_to_delete=新建ArrayList();
一些数据。添加(“一”);
一些数据。添加(“两个”);
一些数据。添加(“三”);
一些数据。添加(“四”);
一些数据。添加(“五”);
删除索引。添加(4);
删除索引。添加(2);
对于(int i=0;i
对我来说,这很有效:
ArrayList some_data=new ArrayList();
ArrayList索引_to_delete=新建ArrayList();
一些数据。添加(“一”);
一些数据。添加(“两个”);
一些数据。添加(“三”);
一些数据。添加(“四”);
一些数据。添加(“五”);
删除索引。添加(4);
删除索引。添加(2);
for(int i=0;ireceivedMessages.remove(0);
总是删除第一个元素…你在for循环中这样做了吗?可能是的,我知道它应该删除第一个元素…但它总是删除最后一个元素-在调试模式下我看到了。如果我选择3个元素(receivedMessages.remove(0);
)删除最后3个对象…我想从位置(索引)删除对象0例如,它仍然从最后一个位置删除对象…您应该向我们显示receivedMessages
的类型。还要注意,如果mListOfItemsToDelete
不是按降序排列,则在第一次删除后,索引将关闭。receivedMessages.remove(0);
总是删除第一个元素…你在for循环中这样做吗?可能是的,我知道它应该删除第一个元素…但它总是删除最后一个元素-在调试模式下,我看到了。如果我选择3个元素,它(接收消息。删除(0);
)会删除最后3个对象…我想从位置删除对象(索引)例如,它仍然从最后一个位置删除对象…您应该向我们显示receivedMessages
的类型。还请注意,如果mListOfItemsToDelete
不是按降序排列,则在第一次删除后索引将关闭。但这是ArrayList
,我只能使用:mListOfItemsToDelete.get获取元素(i)
int indexToRemove=mListOfItemsToDelete.get(i);receivedMessages.remove(indexToRemove);mListOfItemsToDelete的数据类型是整数,将其更改为“int”或使用上面的代码,应该对您有效。但这是ArrayList
,我只能使用:mListOfItemsToDelete.get(i)获取元素
int indexToRemove=mListOfItemsToDelete.get(i);receivedMessages.remove(indexToRemove);mListOfItemsToDelete的数据类型是整数,请将其更改为“int”或使用上述代码,它应该适用于您。我有相同的代码(唯一的区别是某些数据的类型
,它是消息模型
而不是字符串
…这表明我的代码似乎很好。对吗?我得到了相同的代码(唯一的区别是某些数据的类型
,它是MessageModel
而不是String
…这表明我的代码看起来不错。我说的对吗?
private void deleteSelectedMessages() {
Log.i("arrayIN_:", receivedMessages.toString());
for (int i=0; i<mListOfItemsToDelete.size(); i++) {
//TODO: receivedMessages.remove delete last elements, not selected...
receivedMessages.remove(Integer.parseInt(mListOfItemsToDelete.get(i).toString()));
Log.e("position:", mListOfItemsToDelete.get(i).toString());
Log.i("arrayFOR" + i + ":", receivedMessages.toString());
}
Log.i("arrayIN:", receivedMessages.toString());
mListOfItemsToDelete.clear();
}
04-04 16:48:29.536 5829-5829/app.com.mmm I/arrayIN_::
[app.com.mmm.models.MessageModel@3ae1bbc,
app.com.mmm.models.MessageModel@cfd4745,
app.com.mmm.models.MessageModel@17ec8e9a,
app.com.mmm.models.MessageModel@2847d3cb,
app.com.mmm.models.MessageModel@231f37a8]
04-04 16:48:29.536 5829-5829/app.com.mmm E/position:: 2
04-04 16:48:29.536 5829-5829/app.com.mmm I/arrayFOR0::
[app.com.mmm.models.MessageModel@3ae1bbc,
app.com.mmm.models.MessageModel@cfd4745,
app.com.mmm.models.MessageModel@2847d3cb,
app.com.mmm.models.MessageModel@231f37a8]
04-04 16:48:29.536 5829-5829/app.com.mmm E/position:: 1
04-04 16:48:29.536 5829-5829/app.com.mmm I/arrayFOR1::
[app.com.mmm.models.MessageModel@3ae1bbc,
app.com.mmm.models.MessageModel@2847d3cb,
app.com.mmm.models.MessageModel@231f37a8]
04-04 16:48:29.536 5829-5829/app.com.mmm I/arrayIN::
[app.com.mmm.models.MessageModel@3ae1bbc,
app.com.mmm.models.MessageModel@2847d3cb,
app.com.mmm.models.MessageModel@231f37a8]
04-04 16:48:29.536 5829-5829/app.com.mmm I/arrayOUT::
[app.com.mmm.models.MessageModel@3ae1bbc,
app.com.mmm.models.MessageModel@2847d3cb,
app.com.mmm.models.MessageModel@231f37a8]
ArrayList<String> some_data=new ArrayList<String>();
ArrayList<Integer> indexes_to_delete=new ArrayList<Integer>();
some_data.add("one");
some_data.add("two");
some_data.add("three");
some_data.add("four");
some_data.add("five");
indexes_to_delete.add(4);
indexes_to_delete.add(2);
for(int i=0;i<indexes_to_delete.size();i++) {
some_data.remove(indexes_to_delete.get(i).intValue());
}