Java中怎么对数组中的字符串进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中怎么对数组中的字符串进行排序相关的知识,希望对你有一定的参考价值。

例如一个数组 [ 梅花A, 小王, 方块9, 方块K, 黑桃2, 红心3 ]
怎么让它按照牌值3、4、5、6、7、8、9、10、J、Q、K、A、2、小王、大王排序
最后结果为 [ 红心3,方块9, 方块K,梅花A, 黑桃2,小王 ]
能给我定义一个方法的代码么?

public class Te 

public static void main(String[] args) 
String[] Target =  "梅花A", "小王", "方块9", "方块K", "黑桃2", "红心3" ;
sort(Target);
for (int i = 0; i < Target.length; i++) 
System.out.print(Target[i]+" , ");



private static void sort(String[] target) 
final String[] sortR =  "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2", "小王", "大王" ;
int size = target.length;
int[] temps = new int[size];
for (int i = 0; i < target.length; i++) 
for (int j = 0; j < sortR.length; j++) 
if (target[i].contains(sortR[j])) 
temps[i] = j;



for (int i = 0; i < size - 1; i++) 
for (int j = 0; j < size - 1; j++) 
if (temps[j] > temps[j + 1]) 
String sesTemp = target[j];
int temp = temps[j];
temps[j] = temps[j + 1];
temps[j + 1] = temp;
target[j] = target[j + 1];
target[j + 1] = sesTemp;




参考技术A //按正常排序。将要排序的字符串传进来;转换成整数就可以了
public Integer Count (String str)
int count = 0;
if(str.equals("小王"))
count = 16;
else if(str.equals("大王"))
count = 17;
else
str = str.substring(str.length()-1);
if(str.toLowerCase().equals("j"))
count = 11;
else if(str.toLowerCase().equals("q"))
count = 12;
else if(str.toLowerCase().equals("k"))
count = 13;
else if(str.toLowerCase().equals("a"))
count = 14;
else if(str.toLowerCase().equals("2"))
count = 15;
else
count = Integer.parseInt(str);


return count;
本回答被提问者采纳
参考技术B 定义两个数组,使用类似键值对的方式追问

能详细说下么,具体代码怎样的,初学者求帮助(┬_┬)

java中怎么 对数组里的 元素 按出现的顺序排序

java中怎么对数组里的元素按出现的顺序排序 例如 数组【apple dog apple dog apple cat cat dog lamb】 按照元素出现的先后顺序排序 排序结果【apple apple apple dog dog dog cat cat lamb】 有没有很么方法可以调用?

其实这个用java.utils.Arrays这个对象里的sort(T[],Comparator)的这个方法就可以了。

String[] words = new String[] "apple", "dog", "apple", "dog", "apple", "cat", "cat", "dog", "lamb" ; Arrays.sort(words, String.CASE_INSENSITIVE_ORDER);
这样words就已经被排序了。

Plus: Comparator用String自己带的比较器即可。CASE_INSENSITIVE_ORDER是一个大小写不敏感的比较器。
参考技术A 我尽量多写了几种数据结构,比较非主流,纯属娱乐
public static String[] sort(String[] strArr)
if(null == strArr || strArr.length == 0)
return strArr;

Set<String> set = new HashSet<String>();
Map<String, Integer> map = new HashMap<String, Integer>();
int length = 0;
for (String str : strArr)
set.add(str);
if (set.contains(str))
int sum = 1;
if (map.containsKey(str))
sum = map.get(str) + 1;
map.remove(str);

map.put(str, sum);


Iterator<String> it = set.iterator();
while(it.hasNext())
String s = it.next();
int j = map.get(s);
for(int i=0;i<j;i++)
strArr[length]=s;
length++;


return strArr;
本回答被提问者和网友采纳
参考技术B 拆分出来,逐个累计数量,可以借助Map的,再做排序 参考技术C String [] str=new String[]"apple","dog","apple","dog","apple","cat","cat","dog","lamb";
List list=new LinkedList();
for(String s:str)
if(list.lastIndexOf(s)!=-1)
list.add(list.lastIndexOf(s), s);
else
list.add(s);


System.out.println(list);

以上是关于Java中怎么对数组中的字符串进行排序的主要内容,如果未能解决你的问题,请参考以下文章

Radix 使用 Java 中的队列对字符串数组进行排序

JavaScript数字数组怎么按数字大小排序?

基于Java中的给定模式对字符串数组进行排序

php怎么对数组进行排序

Java中treeset怎么对字符串排序,对整形数值进行排序可以按照从小到大排序,若是对字符串排序该怎么排序

java12 - 7 排序的案例