将列表分成X值的插槽

时间:2018-08-21 14:14:17

标签: java list sorting

我的Java应用程序中有一个列表,它是自定义对象的列表,所以让我们说这些对象具有称为A的属性,然后另一个始终相同的对象具有另一个值称为B。您进行了计算在列表中的每个A元素和固定的B值之间,您会得到一个双精度值,并且这些值的范围从0到无穷大,Id需要将这些值将对象拆分为多个插槽,例如,在最终排序的列表中计算结果范围从0到50的对象应该排在排序列表的首位,然后是范围在50到100之间的对象,依此类推。如何实现呢?

double valueA = 40; //some random number as an example

List<MyCustomType> list = ...

现在列表中的每个项目都有一个道具,该道具的值与valueA进行比较,因此列表中的每个项目将具有不同的计算值,这就是我要排序的值。

1 个答案:

答案 0 :(得分:1)

您可以根据需要使用Java 8流功能拆分数据,以下是示例:

   public class DateTest {

        public static void main(String[] args) {

            List<Division> divList = new ArrayList<>();

            divList.add(new Division(50, 7));
            divList.add(new Division(718, 9));
            divList.add(new Division(38, 9));
            divList.add(new Division(37, 4));

            Function<Division, Integer> condition = s -> {
               return ((s.x / s.y) > 50) ? 1 : 0;
            };
            Map<Integer, List<Division>> collect = divList.stream().collect(
                    Collectors.groupingBy(condition));

            System.out.println(collect.toString());
        }
    }