根据子字符串对字符串进行排序

时间:2019-03-29 11:27:12

标签: java

我有这样的字符串列表

  
    

B2B16,A1B01,S1B32,A1B23,B1B44

  

我想基于每个5个字符串的substring(3,4)对字符串进行排序。我想根据从小到大依次具有1,0,2,3,4的子字符串(3,4)对字符串进行排序。

预期结果:

  
    

A1B01,B2B16,A1B23,S1​​B32,B1B44

  

我尝试过:

myList.sort(Comparator.comparing(ssss -> ssss.substring(3, 4)).thenComparing(ssss -> ssss.subtring(3, 4), Comparator.reverseOrder()));

但这不起作用。

3 个答案:

答案 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>