当前位置: 首页 > 面试题库 >

Java:使用hashmap或其他Java集合创建查找表?

谭晓博
2023-03-14
问题内容

扩展这个问题,我接受了一个答案,该答案说在这种情况下
使用查找表或哈希映射 ,因为它是 处理多个条件 的更好的 构造

当前构造。

用于存储消息的类。

    public class ProgressMessages 
    {
     public static String msg1="Welcome here .....";
     .
     .
     .
     //around 100 more similar static variables.
    }

条件并显示来自上述类的正确消息。

    int x=calculatedVal1(m,n); 
    int y=calculatedVal2(o,q);

    SimpleDateFormat formater=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date d=new Date();
    String s=formater.format(d);

    try {
          long d1 = formater.parse("2013-01-10 13:53:01").getTime();
          long d2=formater.parse(s).getTime();
          totaldays=Math.abs((d1-d2)/(1000*60*60*24));
         } catch (ParseException e) {
            e.printStackTrace();
         }

    if(totaldays<7&&x<20)
     {
      System.out.println("my message...1"+ProgressMessages.msg1); 
     }

    else if(totaldays<7&&x>10&&y<20)
    {
      System.out.println("my message...2"+ProgressMessages.msg2);
    }   
    ....
    //obvioulsy 100 more else-if's to display 100 messages.

我实际上想知道在这种情况下查找表有什么帮助?

应该如何在Java Hashmap / Hashtable等中实现它,如何具有优势?

- - 编辑 - -

我要去@assylias anwer,因为它更干净。但是,如果我使用Enums,则可以解决问题。

为了描述大局…

即消息列表就像…

1)“ Welcome” + nameOfUser +“您的成功率是” + succssRate +“%” +之前是+早期+“%”。

2)“哦是的..” + succssRate +“%” +从+早期+“%”改进。

3.)“现在您应该专注于” + exerCiseName。

我如何使用Enumeration来执行此操作,因为它具有固定的String数据。我可以构造不同的构造函数吗?带有汇编代码的任何示例如何回答问题?


问题答案:

我会用一个

Map<Criteria, Message> lookupTable;

Criteria您编写的类在哪里(并覆盖equals()hashCode()),代表选择消息的条件。

Message也是您编写的类,它封装了实际消息,String但还提供了一些设置变量的功能。

使用此解决方案,您必须在程序开始时初始化一次地图,并且始终可以像这样使用它:

Criteria criteria = ... // gather your criteria somehow
Message msg = lookupTable.getMessage(criteria);
// use your variable setting methods here
String message = msg.toString();


 类似资料:
  • 一、概述 从本文你可以学习到: 什么时候会使用HashMap?他有什么特点? 你知道HashMap的工作原理吗? 你知道get和put的原理吗?equals()和hashCode()的都有什么作用? 你知道hash的实现吗?为什么要这样实现? 如果HashMap的大小超过了负载因子(load factor)定义的容量,怎么办? 当我们执行下面的操作时: HashMap<String, Intege

  • 问题内容: 我试图创建一个地图列表。在下面的代码中,我期望得到 但是,我只有 如何避免覆盖第一张地图?这是我的代码: 谢谢! ========================= 作为来自过程语言背景(SAS)的Java学习者,我花了很多时间学习和试验ArrayList,LinkedList,Map,LinkedMap等- 我无法使它正常工作。而且我不了解我的有限知识。现在,以下所有答案都很出色!他

  • 这种差异让我很困惑: 为什么?

  • 我试图使用java代码在Mysql数据库中创建一个新用户,但代码不起作用。这是一个数据库类,用于初始化数据库连接、创建用户、设置密码等。 这是我的主课。 但是当我在Mysql工作台中扫描任何新服务器时,它不会显示任何新服务器。 添加:-当我右键单击空白区域(Mysql Workbench)时,有一个选项“从剪贴板添加连接”(虽然我不知道它在做什么),它返回一个错误:-“无法从字符串“Give th

  • 问题内容: 我想在CSS中使用大小均相同但高度不相同的元素来实现网格效果。我希望下面的元素始终位于底部元素的50px处,无论接下来是什么。 我尝试使用浮点数,但该错误。因此,我尝试使用Flex,但是它仍然无法满足我的要求。 问题答案: Try the new CSS Grid Layout 建立一个块级网格容器。该grid-auto-rows属性设置自动生成的行的高度。在此网格中,每行高度为50p

  • 我想编写一个程序,在这个程序中,用户可以决定在什么对象中存储值。用户可以使用集合、列表和文件(例如,Txt、Xml)。我想写一个接口,在那里最终用户选择哪一个(“storage-”)对象并不重要,这样我就不必为每一个决策都编写相同的方法。 我应该如何为它制作一个接口?接口的方法是否足够合适?我还需要做什么/考虑什么?