当前位置: 首页 > 知识库问答 >
问题:

在HashMap中存储两个枚举值

齐意致
2023-03-14

我想将< code>socket.getSocket()和< code > socket status . getsocketstatus()存储在< code>HashMap中。但是< code>hMap.put(socket.getSocket()、socket status . getsocketstatus());引发< code > NullPointerException 。我该如何解决这个问题?

下面是我的两个班级:

SocketInfoMap.java

package vd.socket.map;

import java.util.HashMap;
import java.util.Map;

public class SocketInfoMap {

    public enum Socket {

        ONE("01"), TWO("02"), THREE("03"), FOUR("04"), FIVE("05"), SIX("06"), SEVEN("07"), EIGHT("08");

        private static Map<Socket, String> sMap = new HashMap<Socket, String>();
        private String socket;

        private Socket(String socket) {
            this.socket = socket;
        }

        public String getSocket() {
            return socket;
        }

        static {
            for (Socket socket : Socket.values()) {
                sMap.put(socket, socket.getSocket());
            }

        }
    }

    public enum SocketStatus {

        LIFTED(1), NOT_LIFTED(0);

        private static Map<SocketStatus, Integer> stMap = new HashMap<SocketStatus, Integer>();
        private int socketStatus;

        private SocketStatus(int socketStatus) {
            this.socketStatus = socketStatus;
        }

        public int getSocketStatus() {
            return socketStatus;
        }

        static {
            for (SocketStatus socketStatus : SocketStatus.values()) {
                stMap.put(socketStatus, socketStatus.getSocketStatus());
            }

        }
    }

    private static Map<String, Integer> hMap = new HashMap<String, Integer>();

    public SocketInfoMap(Map<String, Integer> hMap) {
        SocketInfoMap.hMap = hMap;
    }

    public Map<String, Integer> gethMap() {
        return hMap;
    }

}

SocketMapTest.java

package vd.socket.map;

import java.util.Map;
import vd.socket.map.SocketInfoMap.*;

public class SocketMapTest {
    private static Map<String, Integer> hMap;

    public static void main(String[] args) {

        SocketStatus socketStatus = SocketStatus.LIFTED;
        Socket socket = Socket.TWO;

        if ((socket == Socket.TWO) && (socketStatus == SocketStatus.LIFTED)) {
            hMap.put(socket.getSocket(), socketStatus.getSocketStatus());
            System.out.println(hMap);
        } else
            hMap.put(socket.getSocket(), socketStatus.getSocketStatus());
        System.out.println(hMap);

    }
}

共有1个答案

阎知
2023-03-14

初始化主方法内的hMap..浏览此链接,希望它能帮助您。。

如何将枚举类型存储到映射中?

 类似资料:
  • 我希望使用枚举将值映射到数据库表行: 我想使用status=active从FE中搜索和获取状态,但只存储到数据库行字段中的符号A。 我如何将枚举键A存储到数据库中?

  • 我正在尝试使用put方法将arraylist存储在hashmap中。我在下一步中清除了列表,以便在下一次迭代中添加下一组值。一旦清除列表,地图中的值也会被清除。虽然我在清理清单之前已经把清单放在地图上了。 sysout打印{key=[]} 有人请让我清楚如何坚持hashmaphash地图。

  • 问题内容: 我想在CoreData中存储托管对象的枚举状态 最后一步是将StateFullManagedObject的状态变量转换为ObjStatus以进行直接比较,这对我不起作用。例如,我不能在Int16和Int16枚举之间使用==运算符。我得到的编译时错误是 Int16不能转换为’MirrorDisposition’ 。请参阅以下条件: 如何在Int16和枚举之间进行比较/分配? 问题答案:

  • 问题内容: 给出测试代码: 我想检查两个给定的枚举是否包含相同的值。 也许有更优雅的方式做到这一点? 问题答案: 建立一组名称: 为此(考虑将以上内容提取到方法中)。 然后:

  • 我有两个枚举,它们实现了如下相同的接口:- 名为SystemA和SystemB的两个枚举正在实现此接口。 我想要像这样应用getConfigFunction:- 但它会抛出编译时错误,因为形成的流的类型为:Config[]。所以我尝试了以下修改:- 但这也失败了,因为我还需要修改forEach部分。有人能帮忙吗?我该如何修改forEach部分,或者我该如何使用map()/flatmap()函数,这