我有一个像 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
guard let gai = GAI.sharedInstance() else {
assert(false, "Google Analytics not configured correctly")
}
gai.tracker(withTrackingId: "UA-1226695665345-1")
// Optional: automatically report uncaught exceptions.
gai.trackUncaughtExceptions = true
GAI.sharedInstance().dryRun = true
gai.defaultTracker.allowIDFACollection = true
// Optional: set Logger to VERBOSE for debug information.
// Remove before app release.
gai.logger.logLevel = .verbose;
guard let tracker = GAI.sharedInstance().defaultTracker else { assert(false, "Google Analytics not configured correctly") }
tracker.set(kGAIScreenName, value: "ViewController")
tracker.allowIDFACollection = true
guard let builder = GAIDictionaryBuilder.createScreenView() else { assert(false, "Google Analytics not configured correctly") }
tracker.send(builder.build() as [NSObject : AnyObject])
}
这样的List<Integer>
,我想得到像{ 1, 2, 3 ,4, 5 }
这样的结果。
如何使用Java8流或以任何聪明的方式做到这一点?
12345
由一位数字非负整数组成。
我绝对可以喜欢List
,但这很繁琐。
答案 0 :(得分:5)
int n = IntStream.of(array).reduce(0, (a,b) -> 10*a + b)
这实际上与以下内容相同:
int n = 0;
for (int b : array) {
n = 10 * n + b;
}
就个人而言,我会在没有其他约束的情况下选择后者,因为它是简单得多的代码,不涉及重量相对较大的流框架,更易于调试等。
答案 1 :(得分:1)
这是通过不使用流,而是使用正则表达式 可能 的方式:
Integer.parseInt(Arrays.toString(nums).replaceAll("\\D+", ""));
答案 2 :(得分:1)
您还可以使用以下方法获得相同的结果
List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5);
int size = ints.size();
double res = IntStream.range(1, size + 1)
.mapToDouble(i -> ints.get(i - 1) * Math.pow(10, size - i))
.sum();
那只是将每个digit*(10^digit_position_from_right)
的和加起来,其中digit_position_from_right
从零开始。
答案 3 :(得分:0)
最实用的想法之一可能是将数字视为字符串,然后在末尾解析它们:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Long result = list.stream()
.map(Object::toString)
.collect(Collectors.collectingAndThen(
Collectors.joining(), Long::parseLong));
答案 4 :(得分:0)
可以使用以下方法获得结果:
List<Integer> nums = Arrays.asList(1, 2,3,4);
String s = "";
for (Integer x : nums) {
s += x.toString();
}
Integer FinalNum = Integer.parseInt(s);