【问题标题】:How to search list of objects of java using a property name如何使用属性名称搜索java对象列表
【发布时间】:2013-12-06 23:27:46
【问题描述】:

我有一张如下图

Map<String,Integer> map = new HashMap<String, Integer>();

map.put("one",1);
map.put("two",2);

如果我想从地图中获取一个元素,我可以使用

 map.get("one");

我有一个清单

List<TestVO> list = new ArrayList<TestVO>();
TestVO vo1 = new TestVO();
  vo1.setId(1);
  vo1.setName("one");


TestVO vo2 = new TestVO();
  vo2.setId(2);
  vo2.setName("two");

list.add(vo1);
 list.add(vo2);

如果我想从这个名称为“one”的列表中搜索,我需要迭代这个列表。有什么简单的方法可以找到这个吗?

我找到了这个Searching in a ArrayList with custom objects for certain strings

但是还有其他简单的方法吗?提前谢谢...

【问题讨论】:

  • 你试过使用Collections.binarySearch(list, "one");吗?
  • @Linus "one" 是 TestVO 类的名称属性。 TestVO 的实例存储在 List 中。
  • 您在链接的问题中阅读了this answer 吗?
  • @R.J 我看到了标记的答案
  • 标记答案并不意味着这是最佳答案。这意味着标记的答案帮助 OP 解决了他们的问题,但并不意味着其他答案是错误的。如果您阅读了其他答案,您就会看到它,并且如果您不受任何不使用 3rd-party lib 的条款的约束,那么我提出的答案很可能是您的解决方案。为什么不试一试呢?

标签: java list search map arraylist


【解决方案1】:

在 Hash Map 中搜索数据的复杂度为 O(1),而 List 的复杂度为 O(N)。

不幸的是,答案是您必须遍历列表。这就是为什么选择合适的数据结构如此重要的原因。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 2011-03-17
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
相关资源
最近更新 更多