我有一个具有3个属性的类:
private static class OrderListItem {
public int price;
public int size;
public Type type;
}
此类的项目将添加到列表中<代码>列表
我想在列表中找到一个指定价格的对象。但大小和类型并不重要。我可以这样做吗:
int index=orders\u book。indexOf(新订单列表项(价格,**任意尺寸**,**任意类型**))
?
或者我必须进行“循环”搜索?
如果需要检索具有所需价格的实例,则可以使用带有过滤器
和findAny
操作的收集流。
int myPrice = /* any value you want */
//This will retrieve an instance with the disired price or null if none is found
OrderListItem item = orders_book.stream()
.filter(i -> i.getPrice() == myPrice)
.findFirst()
.orElse(null);
或者,如果要检索具有所需价格的对象索引,则有两个选项:
OrderListItem
类的equals
方法,以按价格相等于两个OrderListItem,因为indexOf
方法的文档通过其equals
方法检索一个元素。然而,我不会倾向于这个解决方案,因为在我看来,唯一的价格不足以等于两个订单项目,但你肯定比我更清楚你正在建模的问题。所以,我把选择权留给你。此外,如果您重新定义了equals
方法,那么您还应该重新定义hashCode
方法,正如通用hashCode契约所述
https://docs.oracle.com/javase/8/docs/api/java/util/List.html#indexOf-java.lang.Object-
返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回-1。更正式地说,返回最低的索引i,这样(o==null?get(i)==null:o.equals(get(i)),如果没有这样的索引,则返回-1。
class OrderListItem {
public int price;
public int size;
public Type type;
/* ... your implementation ...*/
@Override
public int hashCode() {
return Objects.hash(price);
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (this == obj) return true;
if (getClass() != obj.getClass()) return false;
OrderListItem other = (OrderListItem) obj;
return Objects.equals(price, other.price);
}
}
int myPrice = /* any value you want */
//This will retrieve an instance with the disired price or null if none is found
OrderListItem item = orders_book.stream()
.filter(i -> i.getPrice() == myPrice)
.findFirst()
.orElse(null);
//Retrieving the index
int index = orders_book.indexOf(item);
我正在尝试编写一个方法,该方法可以在列表列表中找到对象的索引并利用并行性。这是我的代码。 当我运行以下代码时 输出类似于 换句话说,即使在找到对象之后,搜索仍在继续。不应该是短路操作吗?我错过了什么?此外,在迭代列表或锯齿数组时,利用并行性的最佳方法是什么? 编辑 按照@Sotirios回答中的想法,我得到了以下输出 请注意 即使找到答案也继续搜索。
问题内容: 我有一张桌子,上面有一块田地。这是我执行时发生的情况: 我想要一个给我以下结果的SQL: 我该如何编写SQL来执行此类查询?我正在使用PostgreSQL。 问题答案: 使用现代SQL,可以使用窗口函数轻松完成此操作: SQLFiddle:http ://sqlfiddle.com/#!15/1e807/1
我有一个person对象,想知道是否可以使用JSTL来执行以下操作: 到目前为止,我所发现的一切都指向集合或数组列表。用户作为会话变量存储。 这可能吗? 非常感谢。
我目前正在努力迭代从第三方API获取的JSON对象。您可能会看到,以前没有真正处理过获取API。 这是我正在获取的JSON文件: 链接到JSON文件 为了获取数据,我使用一个useFetch脚本,它看起来像这样: 我稍后尝试导出的只是每个角色/冠军的名称(他本身就是一个对象,包括名称、描述等) 不幸的是,我在尝试转换JSON对象表示:
我有一个清单,必须找到具体的对象。我必须按学生平均价值排序列表,并创建函数来搜索具有第二高价值的学生。如果与其他学生重复,则按函数返回较小的学生。这个任务的另一个要求(要妥善解决)是我不能创建任何对象。下面我留下了我正在使用的类的代码: 现在,我尝试通过对stream进行反向排序来解决这个问题,然后移除stream的第一个值,并比较stream的两个下一个对象并返回正确的一个。我可以使用for循环
问题内容: 我有简单的redis列表键=>“ supplier_id” 现在,我只需要它检索列表的所有值,而无需实际遍历列表或从列表中弹出该值 从列表中检索所有值的示例现在,我遍历了redis的长度 在 没有迭代的情况下 可以通过更好的redis建模来完成这件事吗?谁能建议 问题答案: 要使用Redis检索列表中的所有项目,则无需迭代和获取每个单独的项目。这确实是低效的。 您只需要使用LRANGE