如何将java方法转换为dart?

穆罕默德·米尔沙巴齐

我想将此方法转换为飞镖,有人可以帮忙吗?

import java.util.stream.Collectors;

public class RangeParser {

    public static void main(String[] args) {
        String ranges = "1,2,3-6,4-5";
        List<Integer> rangeList = getDistinctNumbers(ranges);
        System.out.println(rangeList);
    }

    public static List<Integer> getDistinctNumbers(String ranges) {

        return Arrays.stream(ranges.split(","))
                .map(s -> s.replace(" ", ""))
                .map(Range::new)
                .flatMap(range -> range.render().stream())
                .distinct()
                .sorted()
                .collect(Collectors.toList());
    }

    private static class Range {
        private int start;
        private int stop;

        public Range(String rangeStr) {
            String[] rangeArray = rangeStr.split("-");
            int length = rangeArray.length;

            if (length < 1 || length > 2) {
                throw new IllegalArgumentException("Wrong number of arguments in a Range: " + length);
            }

            start = Integer.parseInt(rangeArray[0]);
            stop = (length == 1) ? start : Integer.parseInt(rangeArray[1]);

            if (stop < start) {
                throw new IllegalArgumentException("Stop before start!");
            }
        }

        public List<Integer> render() {
            List<Integer> pageList = new ArrayList<>(stop - start + 1);
            for (Integer i = start; i < stop + 1; i++) {
                pageList.add(i);
            }

            return pageList;
        }
    }
}
贾希杜尔伊斯兰教

请试试这个

void main() {
  String ranges = "1,2,3-6,4-5";

  var list = ranges.split(",");
  var elementList = [];
  list.forEach((element) {
    if (element.length > 2) {
      elementList.addAll(getRange(int.parse(element.split("-").first),
          int.parse(element.split("-").last)));
    } else {
      elementList.add(int.parse(element));
    }
  });

  print(elementList.toSet().toList());
}

getRange(int first, int second) {
  var rangeList = [];
  for (var i = first; i <= second; i++) {
    rangeList.add(i);
  }
  return rangeList;
}

输出:[1, 2, 3, 4, 5, 6]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章