gpt4 book ai didi

java - 是否有空空闲列表数据结构?

转载 作者:行者123 更新时间:2023-12-01 22:14:56 24 4
gpt4 key购买 nike

我正在使用LinkedList数据结构serverList来存储其中的元素。截至目前,它还可以在 LinkedList serverList 中插入 null ,这不是我想要的。是否有任何其他数据结构可供我使用,它不会在 serverList 列表中添加空元素,但会保持插入顺序?

    public List<String> getServerNames(ProcessData dataHolder) {
// some code

String localIP = getLocalIP(localPath, clientId);
String localAddress = getLocalAddress(localPath, clientId);

// some code

List<String> serverList = new LinkedList<String>();

serverList.add(localIP);
if (ppFlag) {
serverList.add(localAddress);
}
if (etrFlag) {
for (String remotePath : holderPath) {
String remoteIP = getRemoteIP(remotePath, clientId);
String remoteAddress = getRemoteAddress(remotePath, clientId);
serverList.add(remoteIP);
if (ppFlag) {
serverList.add(remoteAddress);
}
}
}

return serverList;
}

此方法将返回一个列表,我以正常方式在 for 循环中迭代它。如果一切都为空,我可以拥有空的 serverList,而不是在列表中包含四个空值。在我上面的代码中,getLocalIPgetLocalAddressgetRemoteIPgetRemoteAddress可以返回null,然后它将添加null元素在链接列表中。我知道我可以添加一个 if 检查,但是我需要在添加到链接列表之前添加四次 if 检查。我可以在这里使用更好的数据结构吗?

我面临的一个限制是 - 该库在非常重的负载下使用,因此该代码必须很快,因为它将被多次调用。

最佳答案

I am using LinkedList data structure serverList to store the elements in it.

鉴于您的目标是速度,这很可能是错误的。除非您将 ArrayList 用作 Queue 或类似的东西,否则 ArrayList 的速度要快得多。

I know I can add a if check but then I need to add if check four time just before adding to Linked List. Is there any better data structure which I can use here?

集合默默地忽略 null 是一个坏主意。它有时可能很有用,有时又非常令人惊讶。此外,它还会违反 List.add 约定。 所以你不会在任何严肃的库中找到它并且你不应该实现它。

<小时/>

只需编写一个方法

void <E> addIfNotNullTo(Collection<E> collection, E e) {
if (e != null) {
collection.add(e);
}
}

并使用它。它不会使您的代码真正变短,但会使其更清晰。

<小时/>

One constraint I have is - This library is use under very heavy load so this code has to be fast since it will be called multiple times.

请注意,任何 IO 都比简单的列表操作慢很多数量级

关于java - 是否有空空闲列表数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31262312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com