我有这样的字符串列表
B2B16,A1B01,S1B32,A1B23,B1B44
我想基于每个5个字符串的substring(3,4)对字符串进行排序。我想根据从小到大依次具有1,0,2,3,4的子字符串(3,4)对字符串进行排序。
预期结果:
A1B01,B2B16,A1B23,S1B32,B1B44
我尝试过:
myList.sort(Comparator.comparing(ssss -> ssss.substring(3, 4)).thenComparing(ssss -> ssss.subtring(3, 4), Comparator.reverseOrder()));
但这不起作用。
答案 0 :(得分:3)
我有点老套,不习惯Java8,但是我可以通过以下方式解决此问题:
class MyComparator implements Comparator<String>
{
@Override
public int compare(String s1,
String s2)
{
return (s1.substring(3, 5).compareTo(s2.substring(3, 5)));
}
}
myList.sort(new MyComparator());
由于所有字符串的长度均为5,因此您也可以使用substring(3)
而不是substring(3, 5)
。
答案 1 :(得分:1)
我在this site中找到了一种不错的方法,基本上,您要在程序中添加的这一行是这里的:Collections.sort(myList, Comparator.comparing((String s) -> s.substring(3, 4)));
答案 2 :(得分:0)
在jave 8中,您可以尝试以下代码
<RelativeLayout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center">
<LinearLayout
android:id="@+id/settings_bar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_green_dark"
android:orientation="horizontal"
android:layout_toRightOf="@+id/main_frame"
android:layout_alignParentRight="true">
<TextView
android:layout_width="0dp"
android:layout_weight="0.7"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:text="Hello"
android:textColor="#ffffff"
android:textSize="32sp" />
<TextView
android:layout_width="0dp"
android:layout_weight="0.3"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:text="Hello"
android:textColor="#ffffff"
android:textSize="32sp" />
</LinearLayout>
</RelativeLayout>