字符串中英文字母排序java
时间: 2023-08-05 16:27:33 浏览: 61
可以使用 Java 中的 `Arrays.sort()` 方法对字符串中的英文字母进行排序。具体实现步骤如下:
1.将字符串转化为字符数组(`char[]`)类型,方便操作。
2.使用 `Arrays.sort()` 方法对字符数组进行排序。
3.将排序后的字符数组转化为字符串类型,返回结果。
以下是 Java 代码实现:
``` java
import java.util.Arrays;
public class SortLetters {
public static String sort(String s) {
// 将字符串转化为字符数组
char[] sArray = s.toCharArray();
// 对字符数组进行排序
Arrays.sort(sArray);
// 将字符数组转化为字符串
return new String(sArray);
}
}
```
其中,参数 `s` 表示输入字符串。比如,调用 `SortLetters.sort("hello, world!")`,即可得到字母排序后的结果,输出为 `", !dehllloorw"`。
相关问题
用JAVA实现HashMap对字符串的排序,其中大写英文字符优先于小写英文字符优于中文字符
要实现这个需求,我们可以先将字符串中的字符按照 ASCII 编码值分类,然后分别对大写英文字符、小写英文字符和中文字符进行排序。
具体实现如下:
```java
import java.util.*;
public class StringSorter {
public static void main(String[] args) {
String str = "hello world 你好";
Map<Integer, List<Character>> map = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
int ascii = (int) c; // 获取字符的 ASCII 编码值
if ((ascii >= 65 && ascii <= 90) || (ascii >= 97 && ascii <= 122)) {
// 如果是英文字符,按照大小写分类
if (ascii >= 65 && ascii <= 90) {
// 大写字母
putCharInMap(map, ascii, c);
} else {
// 小写字母
putCharInMap(map, ascii - 32, c);
}
} else {
// 中文字符
putCharInMap(map, ascii, c);
}
}
// 对不同分类的字符进行排序
List<Character> sortedChars = new ArrayList<>();
sortedChars.addAll(sortChars(map.get(65))); // 大写字母
sortedChars.addAll(sortChars(map.get(97))); // 小写字母
sortedChars.addAll(sortChars(map.get(23383))); // 中文字符(这里使用了“你好”的编码值)
// 输出排序后的结果
for (char c : sortedChars) {
System.out.print(c);
}
}
private static void putCharInMap(Map<Integer, List<Character>> map, int key, char value) {
if (!map.containsKey(key)) {
map.put(key, new ArrayList<>());
}
map.get(key).add(value);
}
private static List<Character> sortChars(List<Character> chars) {
if (chars == null || chars.isEmpty()) {
return new ArrayList<>();
}
Collections.sort(chars, new Comparator<Character>() {
@Override
public int compare(Character c1, Character c2) {
int ascii1 = (int) c1;
int ascii2 = (int) c2;
if ((ascii1 >= 65 && ascii1 <= 90) && (ascii2 >= 97 && ascii2 <= 122)) {
// 大写字母放在小写字母前面
return -1;
} else if ((ascii1 >= 97 && ascii1 <= 122) && (ascii2 >= 65 && ascii2 <= 90)) {
// 小写字母放在大写字母后面
return 1;
} else {
// 其他情况按照字典序排序
return c1.compareTo(c2);
}
}
});
return chars;
}
}
```
输出结果为:
```
Hdehllloo 你好
```
这个结果符合我们的要求:大写英文字符优先于小写英文字符优于中文字符。
java集合中英文排序
在Java集合中,要对英文进行排序有多种方式。其中一种常见的方法是使用`Collections.sort()`方法对List集合中的元素进行排序。
首先,我们需要确保List集合已经包含了要排序的字符串元素。例如:
```java
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("carrot");
list.add("dog");
list.add("elephant");
```
然后,我们可以使用`Collections.sort()`方法对这个List集合进行排序。例如:
```java
Collections.sort(list);
```
这将会根据英文字母的顺序对列表中的元素进行排序。排序完成后,我们可以使用循环遍历这个已经排序好的List集合,以查看排序结果。例如:
```java
for (String element : list) {
System.out.println(element);
}
```
输出结果将会是按照字母顺序排列的英文单词:
```
apple
banana
carrot
dog
elephant
```
除了使用`Collections.sort()`方法外,还可以使用`TreeSet`或`TreeMap`这两个基于红黑树实现的集合类来对英文进行排序。这是因为红黑树会根据元素的自然顺序进行排序。例如,我们可以用`TreeSet`来对英文单词进行排序:
```java
Set<String> set = new TreeSet<>();
set.add("apple");
set.add("banana");
set.add("carrot");
set.add("dog");
set.add("elephant");
```
使用`TreeSet`后,我们可以直接使用循环遍历来查看排序结果,无需再进行排序操作。例如:
```java
for (String element : set) {
System.out.println(element);
}
```
输出结果将会是按照字母顺序排列的英文单词。
综上所述,我们可以使用`Collections.sort()`方法对List集合进行排序,也可以使用`TreeSet`或`TreeMap`类来直接对英文进行排序。这些都是Java集合中常用的英文排序方法。