Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 直接访问可重用对象_Java - Fatal编程技术网

Java 直接访问可重用对象

Java 直接访问可重用对象,java,Java,我得到一个iterable列表,我使用下面的代码迭代它 for (IssueField issueObj : issue.getFields()) { System.out.println(issueObj.getId()); } 该列表的结构如下 [IssueField{id=customfield_13061, name=Dev Team Updates, type=null, value=null}, IssueField{id=customfield_13060, name=

我得到一个iterable列表,我使用下面的代码迭代它

for (IssueField issueObj : issue.getFields())
{
    System.out.println(issueObj.getId());
}
该列表的结构如下

[IssueField{id=customfield_13061, name=Dev Team Updates, type=null, value=null},
 IssueField{id=customfield_13060, name=Development, type=null, value={}}, 
 IssueField{id=customfield_11160, name=Rank, type=null, value=1|i0065r:}, 
 IssueField{id=customfield_13100, name=TM Product, type=null, value=IntelliGlance}, 
 IssueField{id=customfield_11560, name=Release Notes, type=null, value=null}, 
 IssueField{id=customfield_13500, name=Request Type, type=null, value=null}, 
 IssueField{id=customfield_13900, name=Category, type=null, value=null}, 
 IssueField{id=environment, name=Environment, type=null, value=null}]
列表中有100多个这样的对象。是否有一种方法可以直接获得所需的对象值,而无需迭代所有值。目前使用这样的东西,我认为是没有效率的

for (IssueField issueObj : issue.getFields())
{
    if(issueObj.getId().equalIgnoreCase(someId)){
    //Object Found
         }
}

如果您希望能够像您所说的那样对大型数据集进行频繁搜索,那么应该使用HashMap,其中字符串是getId()中的值。HashMap搜索的大O时间复杂度是O(1),其中列表的时间复杂度是O(n)。这将使您获得所需的效率。

如果您希望能够像您所说的那样对大型数据集进行频繁搜索,那么您应该使用HashMap,其中字符串是getId()中的值。HashMap搜索的大O时间复杂度是O(1),其中列表的时间复杂度是O(n)。这将使您获得所需的效率。

如果您不想迭代孔集合以获得所需的对象,您需要将对象存储在最合适的集合中,因此如果您想通过元素id获得元素,我认为最有效的方法是使用Hashmap,然后使用get函数检索所需的元素

HashMap实现为基本操作(get和put)提供了恒定的时间性能,假设hash函数在bucket之间正确地分散元素。对集合视图的迭代需要与HashMap实例的“容量”(bucket数)加上其大小(键值映射数)成比例的时间。因此,如果迭代性能很重要,那么不要将初始容量设置得太高(或负载系数太低),这一点非常重要。

如果不想通过迭代孔集合来获取所需的对象,则需要将对象存储在最合适的集合中,因此如果希望通过元素id获取元素,我认为最有效的方法是使用Hashmap,然后使用get函数来检索所需的元素

HashMap实现为基本操作(get和put)提供了恒定的时间性能,假设hash函数在bucket之间正确地分散元素。对集合视图的迭代需要与HashMap实例的“容量”(bucket数)加上其大小(键值映射数)成比例的时间。因此,如果迭代性能很重要,那么不要将初始容量设置得太高(或负载系数太低),这一点非常重要。

如果您使用的是java 8,您可以试试这个

<your-object> result1 = <your-list>.stream()                        
                .filter(x -> "jack".equals(x.getId()))        
                .findAny()                                      
                .orElse(null); 
result1=.stream()
.filter(x->“jack”.equals(x.getId()))
.findAny()
.orElse(空);

首先,它将列表转换为流,然后您需要像“jack”这样的id,如果是“findAny”,则返回object,否则返回null

<your-object> result1 = <your-list>.stream()                        
                .filter(x -> "jack".equals(x.getId()))        
                .findAny()                                      
                .orElse(null); 
result1=.stream()
.filter(x->“jack”.equals(x.getId()))
.findAny()
.orElse(空);

首先,它将列表转换为流,然后您需要像“jack”这样的id,如果“findAny”,则返回object,否则返回null

如果您的需求是如此频繁的搜索,那么我认为您可以使用像HashMap这样的映射实现。问题是我从REST API获得的这个列表。该列表是有序的还是无序的?除非API提供某种查询功能,这是最有效的方法。如果您的需求是如此频繁的搜索,那么我认为您可以使用像HashMap这样的映射实现。问题是我从REST API获得的这个列表。列表是有序的还是无序的?除非API提供某种查询功能,这是最有效的方法。iterable列表来自REST API,无法对其进行更改,因此首先确保API不能通过其id访问所需对象,大多数API允许您使用请求url上的参数来指定资源,如果没有,您需要将API调用的结果集存储在hashmap中。如果它是公共API,只需给我们一个指向它的链接即可。iterable list来自REST API无法在其中进行更改,因此首先确保API不能通过其id让您访问所需对象,大多数API允许您使用请求url上的参数来指定资源,如果不需要,您需要将API调用的结果集存储在hashmap中。如果它是公共API,请在此处给我们一个链接,您可以将整个列表添加到hashmap中,然后能够利用hashmap搜索时间。因此,第一次浏览整个列表需要O(n)时间,但如果您多次搜索此列表,您将获得hashmap的收益。您可以将整个列表添加到hashmap中,然后能够利用hashmap搜索时间。因此,第一次遍历整个列表需要O(n)时间,但是如果您不止一次搜索这个列表,您将收获hashmap的收益。