【问题标题】:How to get objects' index in a Java List如何在 Java 列表中获取对象的索引
【发布时间】:2012-11-25 23:37:45
【问题描述】:

我正在尝试将数据添加到数组列表中。在这个结果中

[{Store={id_store=2, namestore=Kupat Tahu Singaparna , product=[{id_product=1, price=100000, quantity=1}]}}]

您可以使用以下代码:

static ArrayList Storecart = new ArrayList(); 
LinkedHashMap store = new LinkedHashMap();
LinkedHashMap storeitem = new LinkedHashMap();
LinkedHashMap listproduct = new LinkedHashMap();
ArrayList prdct = new ArrayList(); 

storeitem.put("id_store",id_store);
storeitem.put("namestore",namestr ); 
listproduct.put("id_product", id_prodt);
listproduct.put("price",priced); 
listproduct.put("quantity", quantity); 

prdct.add(listproduct); 
storeitem.put("product", prdct);
store.put("Store", storeitem);
Storecart.add(store); 

我需要在数组列表中获取一个对象的索引。问题是,我无法为“获取对象存储和对象产品”循环数组列表并找到每个索引。什么是最好和有效的解决方案?

【问题讨论】:

  • 你为什么在这里使用Maps,而你应该编写一个类来保存这些数据? 为什么你不能循环通过ArrayList? (最后,你为什么不使用泛型,这会让你的代码更易读?)
  • 寻找 List.indexOf(Object) ??
  • 请注意,indexOf 方法可能仍会遍历数组,因此如果关注的是性能,则 indexOf 运算符可能不会给您带来任何好处。 cmets 的观点是好的——总是尽量选择你的数据结构来支持你的需求,而不是寻找一种方法来补偿错误的数据结构。

标签: java arraylist json


【解决方案1】:

嗯,你可以使用 List.indexOf(),就像其他人建议的那样:

Java List API: indexOf()

如果您打算经常这样做,那么大概您已经掌握了对象引用。所以,你可以扩展/包装你想要索引的对象来跟踪它自己的索引。具体来说,您可以根据您第一次遇到它的顺序或其他东西为对象分配其索引。集合中对象的顺序将无关紧要。

我想您也可以使用地图作为另一种可能性。然后只使用 Map 而不是 ArrayList。

底线:如果您正在执行大量“indexOf()”请求,那么 ArrayList 可能不是您数据的最佳容器。

【讨论】:

    猜你喜欢
    • 2011-07-05
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    相关资源
    最近更新 更多