gpt4 book ai didi

java - 如何获取每个具有最大数量且具有唯一键的 String 数组?

转载 作者:行者123 更新时间:2023-11-30 01:53:19 24 4
gpt4 key购买 nike

我有一个ArrayList<String[]>其中包含以下数据:

[Branford, Paddock Lane, 136, 1]
[Branford, Paddock Lane, 42, 3]
[Branford, Hartford Road, 117, 0]
[Branford, Hartford Road, 45, 3]
[McAlister, Sigourney Street, 103, 3]
[McAlister, Sigourney Street, 61, 1]
[McAlister, Stanford Street, 1, 3]
[McAlister, Stanford Street, 34, 4]
[Cypress Gardens, Route 115, 112, 12]
[Cypress Gardens, Park Road, 10, 4]
[Cypress Gardens, Park Road, 49, 4]
[Cypress Gardens, Old Farm Road, 28, 5]
[Cypress Gardens, Old Farm Road, 79, 3]
[Germfask, Exeter Court, 28, 7]
[Germfask, South Boulevard, 119, 6]
[Germfask, South Boulevard, 135, 3]
[Minford, Liberty Lane, 41, 3]
[Minford, Liberty Lane, 52, 4]
[Minford, State Street West, 103, 0]

每个字符串数组的第一个元素是城市名称,最后一个元素是计数器。我需要提取数据,其中还包含字符串数组,但仅包含一个城市名称和最大的计数器。例如,对于 Branford结果将是 [Branford, Paddock Lane, 42, 3] 。如何仅使用 forEach 提取此数据循环?谢谢。

我尝试过使用 forEach通过ArrayList并将当前元素中的每个计数器与城市名称相同的下一个计数器进行比较。

输出不符合预期,因为它不包含数据。

final int[] max = {Integer.parseInt(arrayListSrc.get(0)[3])};
ArrayList<String[]> arrayList = new ArrayList<>(1);
final int[] index = {0};
arrayListSrc.forEach(strings -> {
if (strings[0].equals(arrayListSrc.get(index[0])[0])) {
if (Integer.parseInt(strings[3]) < Integer.parseInt(arrayListSrc.get(index[0])[3])) {
if (Integer.parseInt(arrayListSrc.get(index[0])[3]) > max[0]) {
max[0] = Integer.parseInt(arrayListSrc.get(index[0])[3]);
arrayList.add(strings);
}
}
}
index[0]++;
});

最佳答案

首先,尝试映射您的String[]下次使用合适的数据结构,因为它会更容易处理。只需创建一个合适的类,这就是面向对象编程的目的。

但是,要回答这个问题,您可以映射简单的 List<String[]>通过以下方式:

Map<String, String[]> results = source.stream().collect(
Collectors.toMap(s -> s[0], Function.identity(),
BinaryOperator.maxBy(
Comparator.comparing(s -> Integer.valueOf(s[3])))));

结果是一个Map,其中key代表城市名称,value为原来的String[]被计数器最大化。此解决方案不需要使用forEach() ,而是流操作来达到预期的结果。

但是,您可以使用 forEach()打印或进一步操作结果:

results.forEach((s, strings) -> {
System.out.println(s + " " + Arrays.toString(strings));
});

关于java - 如何获取每个具有最大数量且具有唯一键的 String 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55318761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com