【问题标题】:Looking for solution to get a count of based on the Key in Java寻找基于 Java 中的密钥进行计数的解决方案
【发布时间】:2016-05-05 08:58:37
【问题描述】:

我有 LinkedHashMap,它以以下格式存储键和值:

LinkedHashMap 元素 = 新的 LinkedHashMap(); element.put("登录和相关页面 ~ ForgetPasswordPage ~ testForgetPasswordPage_Functionality ~ testNavigateURL", "Pass"); element.put("登录和相关页面 ~ ForgetPasswordPage ~ testForgetPasswordPage_Functionality ~ testPageLoadedWithWebComponents", "Pass"); element.put("登录和相关页面 ~ ForgetPasswordPage ~ testForgetPasswordPage_General ~ testErrormessageOnEmailAddress", "Pass"); element.put("登录和相关页面 ~ ForgetPasswordPage ~ testForgetPasswordPage_General ~ testErrMsgonIncorrectEmailAddress", "Pass"); element.put("登录和相关页面 ~ ForgetPasswordPage ~ testForgetPasswordPage_LinksValidation ~ testErrormessageOnCaptcha", "Fail"); element.put("登录和相关页面 ~ LoginPage ~ testLoginPage_LinksValidation ~ testErrormessageOnEmailAddress", "Pass"); element.put("登录和相关页面 ~ LoginPage ~ testLoginPage_LinksValidation ~ testErrormessageOnPassword", "Pass"); element.put("登录及相关页面 ~ LoginPage ~ testLoginPage_General ~ testInvalidLogin", "Pass"); element.put("登录和相关页面 ~ LoginPage ~ testLoginPage_Functionality ~ testRememberMeCheckBox", "Pass"); element.put("Lead & Related Pages ~ LeadPage ~ testLeadPage_General ~ testErrormessageOnEmailAddress", "Pass"); element.put("Lead & Related Pages ~ LeadPage ~ testLeadPage_General ~ testErrormessageOnPassword", "Pass"); element.put("Lead & Related Pages ~ LeadPage ~ testLeadPage_General ~ testInvalidLogin", "Pass"); element.put("Lead & Related Pages ~ LeadPage ~ testLeadPage_General ~ testRememberMeCheckBox", "Pass"); element.put("Lead & Related Pages ~ LeadPage ~ testLeadPage_General ~ testNavigateURL", "Pass"); element.put("Lead & Related Pages ~ LeadPage ~ testLeadPage_LinksValidation ~ testPageLoadedWithWebComponents", "Pass"); element.put("Lead & Related Pages ~ LeadPage ~ testLeadPage_LinksValidation ~ testErrMsgonIncorrectEmailAddress", "Pass"); element.put("Lead & Related Pages ~ LeadPage ~ testLeadPage_LinksValidation ~ testErrormessageOnCaptcha", "Pass"); 钥匙 : 原始:登录和相关页面 ~ ForgetPasswordPage ~ testForgetPasswordPage_Functionality ~ testNavigateURL 约定:ModuleName ~ PageName ~ UseCaseName ~ TestCaseName 以这种格式做 Key 的 Moto 是为了得到 1. 模块名称和页数 2. 带有用例计数的模块名称 3. 带有测试用例计数的模块名称 1. 带有用例计数的页面名称 2. 带有测试用例名称计数的页面名称 1. 用例名称和测试用例名称计数

请帮助计算每个模块的数量。 期望一种方法,其中我将传递模块名称并获得 PageCount、UseCaseCount 和 TestCaseCount。

例如:

登录和相关页面 = 2(页数:ForgetPasswordPage、LoginPage) 登录和相关页面 = 6(用例计数:testForgetPasswordPage_Functionality、testForgetPasswordPage_General、testForgetPasswordPage_LinksValidation、testLoginPage_LinksValidation、testLoginPage_General、testLoginPage_Functionality) 登录和相关页面 = 9(TestCase 计数:testNavigateURL、testPageLoadedWithWebComponents、testErrormessageOnEmailAddress、testErrMsgonIncorrectEmailAddress、testErrormessageOnCaptcha、testErrormessageOnEmailAddress、testErrormessageOnPassword、testInvalidLogin、testRememberMeCheckBox)

请帮我解决问题。

【问题讨论】:

  • 为什么不把你的String key替换成Class Key,包含moduleNamepageNameuseCaseNametestCaseName字段?
  • 我是收藏新手,突然想到了这个场景。能否请您详细说明一下。
  • Value in Map 的作用是什么?我认为你只需要 List,而不是 Map,如果你每次都迭代它们
  • 我将 HashMap 作为输入。现在我需要设计一个用于报告和状态更新的电子邮件模板。
  • 我无法更改 HashMap 输入,我只需要使用它

标签: java collections iteration


【解决方案1】:

    static LinkedHashMap complete = new LinkedHashMap();
    static Set Pagecounter = new TreeSet();
    static Set Usecounter = new TreeSet();
    static Set Testcounter = new TreeSet();
    static String totalNumber;

   /**
     * @param logData
     * @return
     */
    public static LinkedHashMap logIteration(LinkedHashMap logData) {
        Set keys = logData.keySet();
        Iterator itr = keys.iterator();
        boolean available = false;
        boolean tcAvailable = false;
        while (itr.hasNext()) {
            String key = (String) itr.next();
            String value = (String) logData.get(key);
            if (value.equalsIgnoreCase("Fail")) {
                tcAvailable = true;
            }
            String[] listArray = key.split("~");
            if (complete.size() > 0) {
                Set moduleName = complete.keySet();
                Iterator itr1 = moduleName.iterator();
                while (itr1.hasNext()) {
                    String key1 = (String) itr1.next();
                    if (listArray[0].equals(key1)) {
                        available = true;
                        break;
                    } else {
                        available = false;
                    }
                }
            } else {
                available = true;
            }
            if (available) {
                processControl(listArray, tcAvailable);
            } else {
                clearSet();
                if (tcAvailable) {
                    tcAvailable = false;
                }
                processControl(listArray, tcAvailable);
                available = false;
            }
        }
        return complete;
    }

    /**
     * @param listArray
     * @param tcstatus
     */
    private static void processControl(String[] listArray, boolean tcstatus){
        Pagecounter.add(listArray[1].trim());
        Usecounter.add(listArray[2].trim());
        Testcounter.add(listArray[3].trim());
        if (tcstatus) {
            totalNumber = Pagecounter.size() + "~" + Usecounter.size() + "~" + Testcounter.size() + "~Fail";
        } else {
            totalNumber = Pagecounter.size() + "~" + Usecounter.size() + "~" + Testcounter.size() + "~Pass";
        }
        complete.put(listArray[0], totalNumber);
    }

    /**
     * 
     */
    private static void clearSet(){
        Pagecounter.clear();
        Usecounter.clear();
        Testcounter.clear();
    }

答案如下所示

登录及相关页面=2~6~8~失败

Lead & Related Pages=1~1~5~通过

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2015-04-17
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多