【发布时间】:2022-08-16 17:18:03
【问题描述】:
items 是 List<List<String>>。当我添加reversed 时,我看到一个编译错误Cannot resolve method \'get\' in \'Object\'。我在x.get(0) 上得到这个。为什么我会得到这个,我怎样才能得到相反的顺序?我只想根据项目名称对列表进行排序。
List<List<String>> items = new ArrayList<>();
List<String> item2 = new ArrayList<>();
item2.add(\"item2\");
item2.add(\"3\");
item2.add(\"4\");
List<String> item1 = new ArrayList<>();
item1.add(\"item1\");
item1.add(\"10\");
item1.add(\"15\");
List<String> item3 = new ArrayList<>();
item3.add(\"item3\");
item3.add(\"17\");
item3.add(\"8\");
items.add(item1);
items.add(item2);
items.add(item3);
items.stream().sorted(Comparator.comparing(x -> x.get(0)).reversed()).collect(Collectors.toList())
-
如果您使用
Comparator.<List<String>>comparing(x->x.get(0))会怎样? -
我得到
Wrong number of type arguments: 1; required: 2 -
我的错。应该是
Comparator.<List<String>, String>comparing(x->x.get(0))。或者,您可以尝试Comparator.comparing((List<String> x)->x.get(0))。 -
是的,它有效,但你能告诉我为什么吗?
-
@user3310115 粗略地说,在@dan1st 的评论中,
Comparator.<List<String>, String>comparing(x->x.get(0)),第一个List<String>是指您的流使用的元素类型,第二个String是实际比较的内容(因为您采用第一个String来自每个List<String并比较它们)
标签: java