如何简化Java中的印度区字符串? (问题扩展)

2023-12-19

我有一系列印度地区。例如String districts = district1,district2,district3,...等等(也许是印度的全部或部分地区)。
认为,
District1,district2,district3 是拉贾斯坦邦的区
And
第4区、第5区、第6区是古吉拉特邦的区

什么是场景
我想显示地区变量TextView但如果该字符串包含任何州的所有地区,则仅应显示州名称而不是其所有地区。它将减少字符串的大小,并且看起来会更好。
有关详细说明,请参阅基本问题 https://stackoverflow.com/q/65952176/13962262


已达成案例1
输入 = 区 1、区 2、区 3、区 4
输出 = 拉贾斯坦邦,第 4 区

达成案例2
输入 = 1 区、2 区、3 区、4 区、5 区
输出 = 拉贾斯坦邦,第 4 区,第 5 区

达成案例2
输入 = 区 1、区 2、区 3、区 4、区 5、区 6
输出 = 拉贾斯坦邦、古吉拉特邦

以上案例由@Live和Let Live解答实现 https://stackoverflow.com/a/65952389/13962262


预期情况1
输入 = 区 1、区 2、区 3、区 4
输出 = 拉贾斯坦邦、古吉拉特邦(第 4 区)

预期情况2
输入 = 1 区、2 区、3 区、4 区、5 区
输出 = 拉贾斯坦邦、古吉拉特邦(第 4 区、第 5 区)

预期情况3
输入 = 区 1、区 2、区 3、区 4、区 5、区 6
输出 = 拉贾斯坦邦、古吉拉特邦


延伸至我之前的回答 https://stackoverflow.com/questions/65952176/how-simplify-string-of-indian-districts-in-java/65952389#65952389,下面给出了如何实现此要求:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        Set<String> districtSetRajasthan = new HashSet<>();
        districtSetRajasthan.add("Dist1");
        districtSetRajasthan.add("Dist2");
        districtSetRajasthan.add("Dist3");

        Set<String> districtSetGujrat = new HashSet<>();
        districtSetGujrat.add("Dist4");
        districtSetGujrat.add("Dist5");

        Map<String, Set<String>> mapStates = new LinkedHashMap<String, Set<String>>();
        mapStates.put("Rajasthan", districtSetRajasthan);
        mapStates.put("Gujrat", districtSetGujrat);

        // Tests
        String textViewString = "Dist1,Dist2,Dist3,Dist4";
        System.out.println(getStateDistString(textViewString, mapStates));

        textViewString = "Dist1,Dist2,Dist3,Dist4,Dist5";
        System.out.println(getStateDistString(textViewString, mapStates));
    }

    static String getStateDistString(String districts, Map<String, Set<String>> mapStates) {
        // Split districts on comma and put the elements of the resultListing array into
        // a HashSet
        Set<String> districtSetTextView = Arrays.stream(districts.split(",")).collect(Collectors.toSet());

        List<String> resultList = new ArrayList<>();

        for (String state : mapStates.keySet()) {
            Set<String> allDistrictsOfState = mapStates.get(state);
            if (districtSetTextView.containsAll(allDistrictsOfState)) {
                resultList.add(state);
                districtSetTextView.removeAll(allDistrictsOfState);
            } else {
                List<String> temp = new ArrayList<>();
                for (String dist : districtSetTextView) {
                    if (allDistrictsOfState.contains(dist)) {
                        temp.add(dist);
                    }
                }
                if (temp.size() > 0) {
                    String x = state + "(" + String.join(",", temp) + ")";
                    resultList.add(x);
                    districtSetTextView.removeAll(temp);
                }
            }
        }

        return String.join(",", resultList);
    }
}

Output:

Rajasthan,Gujrat(Dist4)
Rajasthan,Gujrat

该解决方案的新增内容:

  1. 创建一个临时的List<String> temp如果不存在完整的地区集,则存储州的地区textViewString.
  2. 创建一个字符串为 state + "(" + strings oftemp用逗号+“)”连接并将其添加到resultList。和原来的解决方案一样,删除所有分区temp from districtSetTextView.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何简化Java中的印度区字符串? (问题扩展) 的相关文章

  • Java 中的工作线程

    我需要通过线程每分钟从表中读取数据 然后执行某些操作 任务完成后 我是否应该启动一个线程并将其置于睡眠模式 1 分钟 然后再次检查表是否有数据 再次执行任务并休眠 1 分钟 这是正确的方法吗 任何人都可以为我提供一些 Java 示例代码来执
  • 从 ArrayList HashMap 中获取多个随机值

    我想从 ArrayList 中获取一些特定数字的随机值 final ArrayList
  • W/Firestore:[CustomClassMapper]:Android 类没有设置器/字段

    我试图使用 Recyclerview 从 Documents 类加载数据 但 logcat 上出现错误 W Firestore 21 1 1 CustomClassMapper No setter field for Document Na
  • 在android上获取电池温度

    android 如何获取电池的温度 http developer android com reference android os BatteryManager html http developer android com referen
  • 如何将 csv/文本文件从 Android 手机发送到 WiFi 打印机?

    我正在开发一个 Android 应用程序 我应该从数据库中获取 csv txt 文件格式的数据 然后我必须将文件发送到 wifi 打印机 有谁知道我如何开始这样做 答案终于很简单 Socket client new Socket IP PO
  • Android Widget 实现

    嗨 如果这个问题很愚蠢 我提前道歉 我对 Android 编程相当陌生 而且学得很快 我刚刚创建了一个任务提醒应用程序 并且想将该应用程序转换 实现为一个可以在主屏幕上查看的小部件 有什么方法吗 这可能吗 Thanks 如果没有更多关于您的
  • 在 Jetpack compose 中使用 ModalDrawer 从右向左打开导航抽屉

    我一直在尝试在 Jetpack compose 中实现导航抽屉 以下代码显示了一种简单的方法 Composable fun ModalDrawerSample val drawerState rememberDrawerState Draw
  • 如何使用 Android 的身份验证标签进行 GCM 加密

    我想制作一个通过 GCM 模式与 Android 身份验证标签加密数据的函数 这是我的源代码 public static byte GCMEncrypt String hexKey String hexIV byte aad throws
  • Android Path addArc 在canvas中两点之间

    我正在尝试在 android 中绘制弧线 在IOS中 用这个方法确实很简单 path addArcWithCenter radius startAngle endAngle clockwise 在android中 我有3个点 我的圆的中心
  • Spring MVC @RequestBody 不适用于 jquery ajax?

    这是我的ajax请求 var dataModel name1 value1 name2 value2 ajax url testURL type POST async false contentType application json d
  • 如何暂时禁用Android按钮[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我想暂时禁
  • 将 cookie 存储在共享首选项中

    我一直在绞尽脑汁地试图弄清楚这一点 我正在制作一个 HttpsURLConnection 并使用 java net cookiemanager 来管理我的 cookie 据我所知 无法使用 android webkit cookiemana
  • java 未知深度的嵌套哈希图

    我有一个要求 我需要有一个嵌套的哈希图 但深度将在运行时决定 例如 如果在运行时 用户说 3 那么我的哈希图应该是这样的 HashMap
  • JShell 如何查找变量或结果的类型

    如何在 JShell 中查找变量或表达式结果的类型 正在尝试 Java 中的按位运算符 jshell gt byte b 5 lt lt 1 Error incompatible types possible lossy conversio
  • PopupWindow 在 Android API 28 的自定义键盘上被剪切

    我做了一个定制键盘 当您长按某个键时 会出现PopupWindow在按键上方显示一些额外的选项 问题在于 在 API 28 中 此弹出窗口被剪切 甚至顶行完全隐藏 我已经为 API with https stackoverflow com
  • 如何从双 SIM 卡设备获取两个电话号码?

    我知道如何获取用户的电话号码 但假设用户的手机是双 SIM 卡 有什么办法可以得到两个电话号码吗 目前我只能获取有效的电话号码 如果电话号码确实存储在SIM卡中 那么您可以使用subscriptionmanager API https de
  • 使用java连接到VPN后面的http服务器

    我想通过 VPN 连接到 REST Web 服务 Java 有没有办法在不使用操作系统功能的情况下建立到 VPN 网关的 pptp l2tp ipsec 连接和 HTTP 请求隧道 这很重要 因为我将从 servlet 连接到多个休息服务
  • facebook accesstoken 存储在共享首选项中 (Android)

    我正在尝试存储来自 Facebook 的访问令牌以供以后使用 为此 我想使用 SharedPreferences 因此 我得到了字符串部分 令牌 和过期日期 如示例所示 final String MY PREFS NAME MyPrefsF
  • JSON 解析为 Java - Android 应用程序

    我需要在 Java Android 应用程序中解析 json 字符串的帮助 JSON 文件的文本 data columns location id name description latitude longitude error type
  • 为什么 java.io.File 没有 close 方法?

    While java io RandomAccessFile确实有一个close method java io File没有 这是为什么 文件在完成时会自动关闭吗 javadoc 的Fileclass 将该类描述为 文件和目录路径名的抽象表

随机推荐

  • Jenkins 签出 GIT 项目失败,权限被拒绝致命:无法分叉

    我有一个 Freestyle Jenkins 项目 它使用 bitbucket 作为 SCM 使用 ssh 作为协议和私钥 不是用户 密码 当我在 master 上构建项目时 它失败并显示以下堆栈跟踪 而它在代理上运行良好 注意错误提到 s
  • X-Frame-Options 禁止 Facebook 应用程序错误

    我正在构建一个 Facebook 应用程序 目前它处于沙盒模式 我的代码 索引 php
  • Slick 3.0如何更新变量列列表,哪个数字只有在运行时才知道

    是否可以更新变量列列表 其中的数字仅在运行时由 slick 3 0 知道 下面是我想要做的示例 不会编译 var q Query UserTable UserTable TableElementType Seq userTable var
  • 隐式参数和函数

    我在考虑 Haskell GHC 中的隐式参数时遇到问题 我有一个函数f 假设隐式参数x 并希望通过应用将其封装在上下文中f to g f x Int gt Int gt Int f n n x g Int gt Int gt Int gt
  • 如何用范围填充可变参数?

    填充可变参数的正确方法是什么 我的尝试看起来像自行车 首先我构建范围然后我将其转换为列表然后到 intarray然后传播它 m getColumns count count 35 toList toIntArray 其中 getColumn
  • 将字符串插入工作表会导致插入数字

    在我的 Google Apps 脚本中 我在电子表格中添加了一行 在附加的这一行中 我尝试插入一个值 0102 的字符串 但是插入时它会转换为数字 102 有没有什么方法可以使用 Google Apps 脚本将值插入到工作表中 而不会格式化
  • Ubuntu 自动从 Github 存储库中拉取

    我在我的服务器上安装了 git 但我希望每当我推送本地所做的更改时它都会从我的 github 存储库中提取 我研究过钩子 但它非常令人困惑 而且我找不到任何教程 有谁知道这是怎么做到的吗 我希望我的服务器在每次提交后从存储库中提取 这看起来
  • JPA 和 PostgreSQL 与 GenerationType.IDENTITY

    我有关于 Postgres 和 GenerationType Identity 与 Sequence 的问题 在这个例子中 Id SequenceGenerator name mytable id seq sequenceName myta
  • PySpark Worker 中 rdd.collect() 上的 ModuleNotFoundError

    我正在 python 中运行 Apache Spark 程序 并且收到一个我无法理解且无法开始调试的错误 我有一个驱动程序 它在名为 hound py 的文件中定义了一个名为 hound 的函数 在同一目录中 我有一个名为 hound ba
  • PHP Websocket 在测试中验证用户身份(传递会话 cookie)

    我正在尝试测试一个场景 一方面 匿名用户应立即断开与 Websocket 连接的连接 另一方面 经过身份验证的用户应保持 Websocket 连接 第一种情况很容易使用下面的代码进行测试 身份验证过程不起作用 对于会话存储 我将 Cooki
  • 具有多种格式的 Moshi LocalDateTime 适配器

    默认情况下 ThreeTenABP LocalDateTime 转换为 date day 10 month 4 year 2018 time hour 3 minute 34 nano 115000000 second 18 我可以编写一个
  • Magento 客户/会话不工作

    这个问题首先被意识到是因为前端的订单历史页面 sales order history 只显示一条短消息 您没有下订单 经过一番调试 发现问题出在这个函数上 Mage getSingleton customer session 它不会返回包含
  • 为什么 Plastic SCM 不断询问我是否信任复制服务器的证书?

    每次运行类似命令时 我开始收到以下提示cm status cs 630 rep MyServer repserver ssl
  • 出现“类型错误...$(...).modal 不是函数

    我正在尝试使用引导模式创建和编辑用户更新注释的函数 在 REACT 项目中 但这是我得到的错误 Uncaught in promise TypeError jquery WEBPACK IMPORTED MODULE 1 default m
  • 查找数组中所有元素都具有特定值的文档

    这基本上是一个简单的问题 但我找不到它的查询函数 示例集合 id 1 foo bar 9 bar 16 id 2 foo bar 9 bar 9 bar 9 示例输出 id 2 foo bar 9 bar 9 bar 9 因为这是唯一一个每
  • python pyplot连接点

    我正在使用一组点制作 pyplot 图 plt plot range 0 10 dictionary key bo 这按照我的预期正确地绘制了点 但是我也希望在这些点之间绘制一条线 我找不到用 pyplot 来做到这一点的方法 我认为这是微
  • Oracle 中完全外连接的奇怪行为 - 如何解释?

    我注意到 Oracle 11 中 FULL OUTER JOIN 的奇怪行为 我正在连接 HR 模式中的表 特别是 EMPLOYEES 和 DEPARTMENTS 例如 以下查询返回 123 行 SELECT FROM employees
  • 使用 $resource 承诺模式缓存数据

    假设我的服务从 resource get 返回一个承诺 我想知道这是否是缓存数据的正确方法 在此示例中 点击后退箭头并返回搜索结果后 我不想再次查询网络服务器 因为我已经有了它们 这是处理这种情况的正确模式吗 下面的示例是查询 Flixte
  • 转换时间字符串格式

    我想将时间数据转换为格式HH mm ss在 JavaScript 中 我的代码有问题 请参阅代码内的注释 function parseTime timeString var timeString timeString toLowerCase
  • 如何简化Java中的印度区字符串? (问题扩展)

    我有一系列印度地区 例如String districts district1 district2 district3 等等 也许是印度的全部或部分地区 认为 District1 district2 district3 是拉贾斯坦邦的区 An