字符串或Map转List对象&&JAVA正则获取括号内的数据与排除括号内的数据

    public static void main(String[] args) {
        //字符串转List对象
        String fromIds = "88-10,89-2,90-3,91-6,92-4";
        List<PointsEvent> pointsEventList = Arrays.stream(fromIds.split(",")).map(id -> new PointsEvent(Integer.valueOf(id.split("-")[0]), Integer.valueOf(id.split("-")[1]))).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(pointsEventList));
        //[{"number":10,"pid":88},{"number":2,"pid":89},{"number":3,"pid":90},{"number":6,"pid":91},{"number":4,"pid":92}]

        //字符串转Map,转List对象
        String[] fromIdArr = fromIds.split(",");
        Map<Integer, Integer> map = new HashMap<>(16);
        for (String s : fromIdArr) {
            String[] idStrArr = s.split("-");
            map.put(Integer.valueOf(idStrArr[0]), Integer.valueOf(idStrArr[1]));
        }
        List<PointsEvent> pointsEventList2 = map.entrySet().stream().map(mi -> new PointsEvent(mi.getKey(), mi.getValue())).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(pointsEventList2));
        //[{"number":10,"pid":88},{"number":2,"pid":89},{"number":3,"pid":90},{"number":6,"pid":91},{"number":4,"pid":92}]

        // key 转 List
        List<Integer> keyList = new ArrayList<>(map.keySet());
        List<Integer> keyList2 = map.keySet().stream().collect(Collectors.toList());
        System.out.println(JSON.toJSONString(keyList));
        //[88,89,90,91,92]
        System.out.println(JSON.toJSONString(keyList2));
        //[88,89,90,91,92]

        // value 转 List
        List<Integer> valueList = new ArrayList<>(map.values());
        List<Integer> valueList2 = map.values().stream().collect(Collectors.toList());
        System.out.println(JSON.toJSONString(valueList));
        //[10,2,3,6,4]
        System.out.println(JSON.toJSONString(valueList2));
        //[10,2,3,6,4]

        // Iterator转List
        List<PointsEvent> keyValueList = new ArrayList<>();
        Iterator<Integer> it = map.keySet().iterator();
        while (it.hasNext()) {
            Integer k = (Integer) it.next();
            keyValueList.add(new PointsEvent(k, map.get(k)));
        }
        System.out.println(JSON.toJSONString(keyValueList));
        //[{"number":10,"pid":88},{"number":2,"pid":89},{"number":3,"pid":90},{"number":6,"pid":91},{"number":4,"pid":92}]

        // Java8 Stream
        List<PointsEvent> list = map.entrySet().stream().map(c -> new PointsEvent(c.getKey(), c.getValue())).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(list));
        //[{"number":10,"pid":88},{"number":2,"pid":89},{"number":3,"pid":90},{"number":6,"pid":91},{"number":4,"pid":92}]

        //Iterator转List
        List<PointsEvent> pointsEvents = new ArrayList<>();
        Iterator<Map.Entry<Integer, Integer>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<Integer, Integer> next = iterator.next();
            PointsEvent pointsEvent = new PointsEvent(next.getKey(), next.getValue());
            pointsEvents.add(pointsEvent);
        }
        System.out.println(JSON.toJSONString(pointsEvents));
        //[{"number":10,"pid":88},{"number":2,"pid":89},{"number":3,"pid":90},{"number":6,"pid":91},{"number":4,"pid":92}]

        //字符串转List对象
        String fromIds2 = "88-{10},89-{2},90-{3},91-{6},92-{4}";
        List<PointsEvent> pointsEventList3 = Arrays.stream(fromIds2.split(",")).map(id -> new PointsEvent(Integer.valueOf(id.split("-")[0]), Integer.valueOf(id.split("-")[1].substring(1, id.split("-")[1].length() - 1)))).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(pointsEventList3));
        //[{"number":10,"pid":88},{"number":2,"pid":89},{"number":3,"pid":90},{"number":6,"pid":91},{"number":4,"pid":92}]

        //字符串转List对象
        String fromIds3 = "88{10},89{2},90{3},91{6},92{4}";
        List<PointsEvent> pointsEventList4 = Arrays.stream(fromIds3.split(",")).map(id -> new PointsEvent(Integer.valueOf(id.replaceAll("[\\{][^\\{\\}]+[\\}]", "")), bracketContent(id))).collect(Collectors.toList());
        System.out.println(JSON.toJSONString(pointsEventList4));
        //[{"number":10,"pid":88},{"number":2,"pid":89},{"number":3,"pid":90},{"number":6,"pid":91},{"number":4,"pid":92}]
        System.out.println(JSON.toJSONString(getBracketContent(fromIds3)));
        //[10,2,3,6,4]
        System.out.println(JSON.toJSONString(getBracketContentStr(fromIds3)));
        //["10","2","3","6","4"]

        String keyStr = fromIds3.replaceAll("[\\{][^\\{\\}]+[\\}]", "");
        System.out.println(keyStr);
        //88,89,90,91,92
        String fromIds4 = "88{10}[10](10),89{2}[2](2),90{3}[3](3),91{6}[6](6),92{4}[4](4)";
        System.out.println(getWords(fromIds4));
        //88,89,90,91,92
        String fromIds5 = "88{10},89{2},90{3},91{6},92{4}";
        System.out.println(getWords1(fromIds5));
        //88,89,90,91,92
        String fromIds6 = "88[10],89[2],90[3],91[6],92[4]";
        System.out.println(getWords2(fromIds6));
        //88,89,90,91,92
        String fromIds7 = "88(10),89(2),90(3),91(6),92(4)";
        System.out.println(getWords3(fromIds7));
        //88,89,90,91,92
    }

    /**
     * 正则获取括号内的数据
     * 获取指定字符串中括号内的内容,返回整型
     *
     * @param content "88{10}"
     * @return Integer
     */
    public static Integer bracketContent(String content) {
        Integer bracketInt = 0;
        Pattern p = Pattern.compile("(?<=\\{)[^\\}]+");
        Matcher m = p.matcher(content);
        while (m.find()) {
            bracketInt = Integer.valueOf(m.group());
        }
        return bracketInt;
    }

    /**
     * 正则获取括号内的数据
     * 获取指定字符串中括号内的内容,返回字符串
     *
     * @param content "88{10}"
     * @return String
     */
    public static String bracketContentStr(String content) {
        String bracketStr = "";
        Pattern p = Pattern.compile("(?<=\\{)[^\\}]+");
        Matcher m = p.matcher(content);
        while (m.find()) {
            bracketStr = m.group();
        }
        return bracketStr;
    }

    /**
     * 正则获取指定字符串中括号内的内容,返回整型数组
     *
     * @param content "88{10},89{2},90{3},91{6},92{4}"
     * @return Integer[]
     */
    public static Integer[] getBracketContent(String content) {
        Integer[] intArr = new Integer[0];
        Pattern p = Pattern.compile("(?<=\\{)[^\\}]+");
        Matcher m = p.matcher(content);
        while (m.find()) {
            intArr = Arrays.copyOf(intArr, intArr.length + 1);
            intArr[intArr.length - 1] = Integer.valueOf(m.group());
        }
        return intArr;
    }

    /**
     * 正则获取指定字符串中括号内的内容,返回字符串数组
     *
     * @param content "88{10},89{2},90{3},91{6},92{4}"
     * @return String[]
     */
    public static String[] getBracketContentStr(String content) {
        String[] strArr = new String[0];
        Pattern p = Pattern.compile("(?<=\\{)[^\\}]+");
        Matcher m = p.matcher(content);
        while (m.find()) {
            strArr = Arrays.copyOf(strArr, strArr.length + 1);
            strArr[strArr.length - 1] = m.group();
        }
        return strArr;
    }

    /**
     * 排除括号及括号内的数据
     * 大括号、中括号、小括号
     *
     * @param content "88{10}[10](10),89{2}[2](2),90{3}[3](3),91{6}[6](6),92{4}[4](4)"
     * @return String
     */
    private static String getWords(String content) {
        return content.replaceAll("[\\{][^\\{\\}]+[\\}]|[\\[][^\\[\\]]+[\\]]|[\\(][^\\(\\)]+[\\)]", "");
    }

    /**
     * 排除括号及括号内的数据
     * 大括号
     *
     * @param content "88{10},89{2},90{3},91{6},92{4}"
     * @return String
     */
    private static String getWords1(String content) {
        return content.replaceAll("[\\{][^\\{\\}]+[\\}]", "");
    }

    /**
     * 排除括号及括号内的数据
     * 中括号
     *
     * @param content "88[10],89[2],90[3],91[6],92[4]"
     * @return String
     */
    private static String getWords2(String content) {
        return content.replaceAll("[\\[][^\\[\\]]+[\\]]", "");
    }

    /**
     * 排除括号及括号内的数据
     * 小括号
     *
     * @param content "88(10),89(2),90(3),91(6),92(4)"
     * @return String
     */
    private static String getWords3(String content) {
        return content.replaceAll("[\\(][^\\(\\)]+[\\)]", "");
    }
@Data
public class PointsEvent implements Serializable {

    private Integer pid;
    private Integer number;

    public PointsEvent(Integer pid, Integer number) {
        this.pid = pid;
        this.number = number;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值