miT*_*liK 1 java sorting element list
所以我有一个List<String> L1 = new ArrayList<>()以下字符串作为元素:
如何list按元素的大小排序,以便在最终状态L1应该是这样的:
我尝试过使用Collections.sort,但按字母顺序排序,这显然不是我想要的.
我认为你要找的是Collections.sort(java.util.List,java.util.Comparator).有了它,您可以指定一个自定义Comparator,根据长度而不是字母关系比较字符串.
像这样的东西:
List<String> stringList = new ArrayList<String>();
// Fill the list
Comparator<String> stringLengthComparator = new Comparator<String>()
{
@Override
public int compare(String o1, String o2)
{
return Integer.compare(o1.length(), o2.length());
}
};
Collections.sort(stringList, stringLengthComparator);
Run Code Online (Sandbox Code Playgroud)
假设 Java 8 可用,并且列表的类型为List<String>:
list.sort(Comparator.comparing(String::length));
Run Code Online (Sandbox Code Playgroud)
这将创建一个新的Comparator,它使用字符串的长度作为排序的基础,然后根据它进行排序。该列表从短到长排序,但如果这是不可取的......
list.sort(Comparator.comparing(String::length).reversed());
Run Code Online (Sandbox Code Playgroud)
...将反转它以首先对最长的字符串进行排序。
如果该列表实际上是一个列表列表(这个问题有点不清楚),List::size则将使用String::length.