java - 选择排序字符串数组 (Java)

标签 java arrays string sorting

我需要知道如何对字符串数组进行排序,我知道如何进行选择排序,但是数组中有数字和字母。这个想法是对一手牌进行排序。 这就是我所拥有的...

clubsArry[0] = 7C

clubsArry[1] = AC

clubsArry[2] = TC

clubsArry[3] = KC

第二个字符代表牌的花色,在本例中为梅花,第一个字符是牌值(T 代表十,K 为王,A 为王牌等),因此对于clubsArry[0 ] ,这张牌是梅花 7。当我对其进行排序并打印时,我得到的输出是......

7C

AC

KC

TC

因此,所有第一个位置有字母的卡片都已正确排序,但我仍然有 7 个梅花位于输出顶部。我想要的输出是...

AC

KC

TC

7C

我尝试对其进行排序的方法是这样做:

public void sortClubs() // A selection sort, that will sort out the clubs 
{
    for (int i = 1; i < clubsArry.length; i++)
    {
        int s = i-1;
        for (int j = i; j < clubsArry.length; j++)
        {
            if (clubsArry[j].compareTo(clubsArry[s]) < 0)
            {
                 s = j;
            }
        }
         String temp = clubsArry[i-1];
         clubsArry[i-1] = clubsArry[s];
         clubsArry[s] = temp;
    }
}

我似乎无法弄清楚,我打算将其转换为 char 数组,然后转换为 int 并排序并将其全部转换回来,但我认为必须有一种更简单的方法来做到这一点,如果有办法的话。

感谢您的帮助:)

疯狂四叶草

最佳答案

使用比较器,然后使用Arrays.sort()方法。这应该有助于您的编码,因为它可以让您专注于一件事:如何订购 2 张不同的卡片?您必须以某种方式对顺序进行硬编码,这是一种方法。我还没有测试过;并且它仅根据第一个字符进行排序。如果第一个字符相同,那么您应该查看第二个字符。

import java.util.Comparator;

public class CardComparator implements Comparator<String> {

    private static final List<Character> CARD_ORDER = Arrays.asList( 
    'A', 'K', 'Q', 'J', '1', '9', '8', '7', '6', '5', '4', '3', '2');

    @Override
    public int compare(String card1, String card2) {
        if( card1.equals(card2)) {
            return 0;
        }

        int firstIndex = CARD_ORDER.indexOf(card1.charAt(0));
        int secondIndex = CARD_ORDER.indexOf(card2.charAt(0));

        return firstIndex - secondIndex;
    }
}

关于java - 选择排序字符串数组 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5506471/

相关文章:

java - 带有通知的未知属性失败

java - 如何使用 spring mvc 将日期插入数据库?

MySQL结果到数组VB.NET

java - 使用 keySet() 方法然后将 Set 更改为字符串数组? java

python - 如何在不使用空格作为单词分隔符的语言(如中文)上执行 Python split()?

ruby - 如何遍历 Ruby 中所有正则表达式匹配的字符串?

javascript - 如何在纯 JavaScript 中以最快的方式检查字符串的最后一个字符是否是数字/数字?

java - 从指定路径加载图像

java - 如何从spring资源获取文件

Java boolean 数组,只有一个元素