gpt4 book ai didi

java - 按对象类型过滤列表对象

转载 作者:行者123 更新时间:2023-12-02 03:55:12 24 4
gpt4 key购买 nike

我有一个对象列表(已排序),这些对象已按对象类型分组。

List<Object> myList = new ArrayList();
myList.add(new Integer());
myList.add(new Integer());
myList.add("string");
myList.add(new Double());
myList.add(new Double());
myList.add(new Double());

如何在不使用 instanceof 运算符的情况下优雅地循环对象组?

我本质上想要这个:

List<List<Object>> result;

我不知道有哪些对象类型,所以简单的方法是像这样循环:

Object obj = iter.next();
String thisClass = obj.class.getSimpleName();
if (!thisClass.equals(lastClass)){
currentList = new ArrayList();
}
currentList.add(obj);

但是,也许流会更好,例如:

myList.stream().collect(Collectors.groupingBy(Class::getSimpleName, Collectors.<IBaseDO>toList()));

是的,这会导致编译错误,因为我无法获得正确的语法。

想法?

最佳答案

这是一个非常糟糕的设计。

但是,您可以这样做:

List<List<Object>> grouped = 
myList.stream()
.collect(collectingAndThen(
groupingBy(Object::getClass, LinkedHashMap::new, toList()),
map -> new ArrayList<>(map.values)
));

关于java - 按对象类型过滤列表对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35560907/

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