小编hel*_*len的帖子

如何检查列表中的列表是否为空?

我有一个Java列表.这是代码:

List<List<Integer>> myList = new ArrayList<>();
myList.add(new ArrayList<Integer>());
myList.add(new ArrayList<Integer>());
myList.add(new ArrayList<Integer>());

myList.get(0).add(1);
myList.get(0).add(2);
myList.get(0).add(3);
myList.get(1).add(4);
myList.get(1).add(5);
myList.get(1).add(6);
myList.get(2).add(7);
myList.get(2).add(8);
myList.get(2).add(9);
Run Code Online (Sandbox Code Playgroud)

现在在我的代码的一部分中,我想检查位于的所有三个列表是否为myList空并且为空.我应该逐个检查这些列表中的每一个,如下所示:

if (myList.get(0) != null && !myList.get(0).isEmpty()) { 
    // do something
} 
Run Code Online (Sandbox Code Playgroud)

......还是有更好更短的方法而不是一个一个地检查?

java list

18
推荐指数
4
解决办法
3149
查看次数

从controller1向controller2发送消息

我在mininet中有一个拓扑结构,包括2个泛光灯控制器(c1和c2),一个连接到c1的开关(s1)和连接到该开关的2个主机(h1和h2).我正在编写一个程序,当c1从s1收到ICMP数据包时,它会向c2发送一条Hello消息.

我正在使用本教程来说明:

可以使用send功能将消息从一个控制器发送到另一个控制器,并且消息必须用"m""m"标记.您将此消息发送到特定控制器,因此TO地址包含两部分IP:端口.IP是另一个控制器的机器IP地址(HAServer正在侦听所有ips),该端口是该机器上HAServer的相应侦听端口.

默认情况下,控制器1上的HAServer正在侦听4242,在4243上的控制器2上,在4244上的控制器3上侦听......依此类推.

recv()函数类似于send函数,您将提供FROM地址以收听特定控制器.来自地址还包括两部分,IP:端口.IP是另一个控制器的机器IP地址(HAServer正在侦听所有ips),该端口是该机器上HAServer的相应侦听端口.

理想情况下,在调用相应的send()函数之后调用此函数,否则,可能尚未建立连接,并且它只会返回错误.

这是我的模块的完整代码:

package net.floodlightcontroller.mactracker;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentSkipListSet;

import net.floodlightcontroller.core.FloodlightContext;
import net.floodlightcontroller.core.IFloodlightProviderService;
import net.floodlightcontroller.core.IOFMessageListener;
import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.module.FloodlightModuleContext;
import net.floodlightcontroller.core.module.FloodlightModuleException;
import net.floodlightcontroller.core.module.IFloodlightModule;
import net.floodlightcontroller.core.module.IFloodlightService;
import net.floodlightcontroller.hasupport.IHAControllerService;
import net.floodlightcontroller.hasupport.NetworkNode;
import net.floodlightcontroller.packet.Ethernet;
import net.floodlightcontroller.packet.ICMP;
import net.floodlightcontroller.packet.IPv4;

import org.projectfloodlight.openflow.protocol.OFMessage;
import org.projectfloodlight.openflow.protocol.OFType;
import org.projectfloodlight.openflow.types.EthType;
import org.projectfloodlight.openflow.types.IpProtocol;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Mactracker implements IFloodlightModule, IOFMessageListener {

    protected static IHAControllerService hacontroller;
    protected static Logger logger = LoggerFactory.getLogger(Mactracker.class);
    protected IFloodlightProviderService floodlightProvider;
    protected …
Run Code Online (Sandbox Code Playgroud)

java mininet

6
推荐指数
1
解决办法
269
查看次数

如何检查列表中的列表是否具有相同的长度

我有一个Java列表.这是代码:

List<List<Integer>> myList = new ArrayList<>();
myList.add(new ArrayList<Integer>());
myList.add(new ArrayList<Integer>());
myList.add(new ArrayList<Integer>());

myList.get(0).add(1);
myList.get(0).add(2);
myList.get(0).add(3);
myList.get(1).add(4);
myList.get(1).add(5);
myList.get(1).add(6);
myList.get(2).add(7);
myList.get(2).add(8);
myList.get(2).add(9);
Run Code Online (Sandbox Code Playgroud)

如何检查myList中存在的列表是否具有相同的长度?我知道我可以通过类似的myList.get(0).size()方式检查每个列表的长度,那么检查所有这些列表是否具有相同长度(而不是逐个检查)的有效且简短的方法是什么?

java list

2
推荐指数
1
解决办法
96
查看次数

在将值分配给列表时面临错误

我有一个包含3个元素的列表.它在while循环中,我想在每次迭代中覆盖它的值.这是代码:

private List<Integer> loadList = new ArrayList<>(3);
.
.
.
while(counter < 10) {
    loadList.add(0, taskNum);
    loadList.add(1, taskNum);
    loadList.add(2, taskNum);
    .
    .
    .
    counter++;
}
Run Code Online (Sandbox Code Playgroud)

但是在运行代码之后,我意识到覆盖不会发生,并且每次将新元素添加到列表的末尾.例如:

起初:a = [1 2 3]

然后:a = [1 2 3 4 5 6]但我希望它像a = [4 5 6]

所以我将代码更改为:

loadList = new ArrayList<>(3);
//initializing
loadList.add(0, 0);
loadList.add(1, 0);
loadList.add(2, 0);
while(counter < 10) {
    loadList.set(0, taskNum);
    loadList.set(1, taskNum);
    loadList.set(2, taskNum);
    .
    .
    .
    counter++;
}
Run Code Online (Sandbox Code Playgroud)

但现在我收到了这个错误:

2018-11-24 13:27:38.298 ERROR [n.f.core.Main] Exception in main
java.lang.IndexOutOfBoundsException: Index: …
Run Code Online (Sandbox Code Playgroud)

java list

2
推荐指数
1
解决办法
56
查看次数

标签 统计

java ×4

list ×3

mininet ×1