gpt4 book ai didi

java - 按排名和字母顺序对 IRC 用户进行排序 - Java Comparator

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:11 25 4
gpt4 key购买 nike

我正在尝试用 java 创建一个非常简单的 IRC 客户端来娱乐,并且刚刚开始处理特定于 channel 的用户列表。我使用以下代码对用户列表进行排序,但它没有完全按照应有的方式进行排序。 IRC 层次结构如下:~ & @ % + (qaohv),如果某人没有这些前缀之一,他们应该位于用户列表的底部。有谁知道我可以做些什么来保留带有一个比较器的列表的字母顺序和排名顺序?

比较器代码:

public class StringComparator implements Comparator<String> {
@Override
public int compare(String a, String b) {
return a.compareToIgnoreCase(b);
}
}

上述比较器的输出示例:

%Brennan
&Adam
&Sheldon
+Mike
+Yoda
@Phil
@Unleashed
Jean
Damien
~Tim

最佳答案

在进行字母比较之前,您需要处理前缀的大小写:

public class StringComparator implements Comparator<String> {
@Override
public int compare(String a, String b) {
int pfx = betterPrefix(a[0],b[0]);
if (pfx != 0)
return pfx;
return a.compareToIgnoreCase(b);
}


private int betterPrefix(char a, char b) {
String prefixOrder = "@%&+"

int idxa = prefixOrder.indexOf(a);
if (idxa < 0) idxa = prefixOrder.length();
int idxb = prefixOrder.indexOf(b);
if (idxb < 0) idxb = prefixOrder.length();

return idxa - idxb;
}
}

这里我假设这两个字符串不为空,但你应该测试一下。

关于java - 按排名和字母顺序对 IRC 用户进行排序 - Java Comparator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14064447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com