Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中按字段分组的对象计数_Java_Sorting_Linked List - Fatal编程技术网

Java中按字段分组的对象计数

Java中按字段分组的对象计数,java,sorting,linked-list,Java,Sorting,Linked List,我有一个班机和一个机场的班机,有好几次航班 public class Flight { String flightNumber; String departureCity; String departureCountry; String departure; String arrivalCity; String arrivalCountry; String arrival; //etc...} public class Airport { String name;

我有一个班机和一个机场的班机,有好几次航班

public class Flight {

String flightNumber;            
String departureCity;
String departureCountry;
String departure;
String arrivalCity;
String arrivalCountry;
String arrival;
//etc...}

public class Airport {

String name;
String city;
String country;
LinkedList <Flight> flights;
//etc...}
公共舱航班{
字符串flightNumber;
弦差;
字符串输出国;
串离;
字符串到达率;
字符串到达国家;
字符串到达;
//等等……}
公共级机场{
字符串名;
字符串城市;
弦国;
LinkedList航班;
//等等……}
在大学里,我有一项任务,就是为每个航班类别的出发国家/地区计算一个机场的航班数量。有什么算法可以做到这一点吗?
我想通过这个参数(departureCountry)对集合进行排序,但没有做出明确的决定。我将非常感谢您的帮助。

我不打算在这里写全部代码,只写步骤

  • 每个机场
    • 保留一张出发国家的地图以供统计(即地图)
    • 在机场的每一次航班
      • 增加地图中出发国家/地区的计数 //就这样,你现在有了计数

考虑到谁只需要计数,根本不需要排序,也就是说,基本上是分组,上面的步骤解释了映射就足够了。

我不打算在这里写全部代码,只写这些步骤

  • 每个机场
    • 保留一张出发国家的地图以供统计(即地图)
    • 在机场的每一次航班
      • 增加地图中出发国家/地区的计数 //就这样,你现在有了计数

考虑到谁只需要计数,根本不需要排序,也就是说,基本上是分组,上面的步骤中解释了映射就足够了。

使用Java 8流有一种简洁的方法:

import java.util.*;
import static java.util.stream.Collectors.*;

public class Main {
    public static void main(String[] args) {
        // I made constructor for departureCountry only to keep it simple
        List<Flight> flights = Arrays.asList(
          new Flight("USA"),
          new Flight("UK"),
          new Flight("CAN"),
          new Flight("USA"),
          new Flight("UK")
        );

        Map<String, Long> flightsPerCountry =
          flights.stream()
                 .collect(groupingBy(Flight::getDepartureCountry, counting()));


        System.out.println(flightsPerCountry);
        // {CAN=1, USA=2, UK=2}
    }
}
import java.util.*;
导入静态java.util.stream.Collectors.*;
公共班机{
公共静态void main(字符串[]args){
//我为出发国制作了构造器,只是为了保持简单
List flights=Arrays.asList(
新航班(“美国”),
新航班(“英国”),
新航班(“CAN”),
新航班(“美国”),
新航班(“英国”)
);
地图飞行国家=
flights.stream()
.collect(分组方式(航班::getDepartureCountry,计数());
System.out.println(flightsPerCountry);
//{加拿大=1,美国=2,英国=2}
}
}

使用Java 8流有一种简洁的方法:

import java.util.*;
import static java.util.stream.Collectors.*;

public class Main {
    public static void main(String[] args) {
        // I made constructor for departureCountry only to keep it simple
        List<Flight> flights = Arrays.asList(
          new Flight("USA"),
          new Flight("UK"),
          new Flight("CAN"),
          new Flight("USA"),
          new Flight("UK")
        );

        Map<String, Long> flightsPerCountry =
          flights.stream()
                 .collect(groupingBy(Flight::getDepartureCountry, counting()));


        System.out.println(flightsPerCountry);
        // {CAN=1, USA=2, UK=2}
    }
}
import java.util.*;
导入静态java.util.stream.Collectors.*;
公共班机{
公共静态void main(字符串[]args){
//我为出发国制作了构造器,只是为了保持简单
List flights=Arrays.asList(
新航班(“美国”),
新航班(“英国”),
新航班(“CAN”),
新航班(“美国”),
新航班(“英国”)
);
地图飞行国家=
flights.stream()
.collect(分组方式(航班::getDepartureCountry,计数());
System.out.println(flightsPerCountry);
//{加拿大=1,美国=2,英国=2}
}
}

您可以在飞行中按起飞国家分组,统计属于这些组的航班。您可以在飞行中按起飞国家分组,统计属于这些组的航班。非常感谢!即使没有代码,您的解决方案也非常清晰:)非常感谢!即使没有代码,您的解决方案也非常清晰:)谢谢您的解决方案!非常出乎意料地解决了这个问题:)虽然我现在不能检查它,因为我有Java 7。谢谢你的解决方案!非常出乎意料的解决这个问题的方法:)虽然我现在不能检查它,因为我有Java7。