获取列表中新添加项的索引?

时间:2014-08-26 13:39:01

标签: java list arraylist

我想将新添加的元素的索引转换为arraylist。例如

List listA = new ArrayList();

// Lots of code adding and removing things from `listA`, imagine `listA` now 
// contains approx 10,000 records

listA.add("element 0");

如何查找新添加项目的索引?

我想也许,我需要一个不同的数据结构,但不能想到要使用什么。

7 个答案:

答案 0 :(得分:7)

添加到列表中的第一个元素将具有索引0 添加的最后一个元素将具有索引listA.size()-1 但是,您应该注意,如果从列表中删除元素,则某些索引(索引具有比删除元素更高的索引)将会更改。例如,如果删除第n个元素,则前一个(第n + 1)个元素将成为第n个元素。

感谢talex发表评论。我忘记了indexOf(),它返回所提供元素的索引(如果在列表中找到该元素)。但是,这需要线性搜索时间。

如果您希望将列表的索引视为查找列表中存储的值的键,那么最好使用HashMap<Integer,String>

答案 1 :(得分:1)

索引将为size(),只需在添加之前获取

List listA = new ArrayList();
...
int index = listA.size();

listA.add("element 0"); // "element 0" will be at the "index" item

答案 2 :(得分:1)

您可以使用indexOf方法检索列表中任何元素的索引:

List<String> listA = new ArrayList<String>();

//Lots of code adding and removing things from listA, imagine listA now contains approx 10,000 records

String str = "element 0"
listA.add(str);

int index = listA.indexOf(str)

如果你只关心最后一个元素的索引,那么javadoc列表会说:“add(E e) 将指定的元素追加到此列表的末尾(可选操作)。“

所以你可以使用:

List<String> listA = new ArrayList<String>();

//Lots of code adding and removing things from listA, imagine listA now contains approx 10,000 records

listA.add("element 0");

int index = listA.size()-1 //minus 1 because index start at 0

你似乎担心按索引访问元素(标识符?),你应该看看Map:

Map<int, String> mymap = new HashMap<int, String>();
mymap.add(1, "element1");
mymap.add(2, "element2");
mymap.add(3, "element3");

mymap.get(3);//return "element3"

答案 3 :(得分:0)

List listA = new ArrayList();

String a = "element 0";

listA.add(a);

int index = listA.indexOf(a);

你去了

答案 4 :(得分:0)

如果使用add(element),则会保留订单,因此列表中的最后一个元素将是最近添加的元素。 所以你可以使用listA.get(listA.size-1);

如果您使用的是add(index,element),则不会出现这种情况,因为订单未被保留。

请点击此处查看相关问题How to get the last value of an ArrayList

答案 5 :(得分:0)

List的索引以0开头,以size()-1结尾。

如果计算元素数量,它将与size()-1相同。

例如,如果您的列表包含100条记录,则最后一个元素的索引将为size()-1,即99。

List listA = new ArrayList();
int lastIndex=listA.size()-1;

答案 6 :(得分:0)

与其他建议不同.... size()给出List的总大小,因为List索引为零,所以size() - 1给出了最后一个的索引元素列表。

不要将; ast元素混淆为刚刚添加的元素。只要我们使用add()方法,新元素最后会附加到列表中,但list也有另一个add方法,它将索引作为参数。使用此方法,您可以在列表中的任何位置添加新元素。在这种情况下,size() - 1不会为您提供最新添加元素的索引。