根据java中包含的数字字符对单词进行排序
如何根据java中包含的数字字符对单词进行排序?? e、 g 拿绳子 用空格把它分成几个字 将数组转换为ArrayList 创建自定义比较器以按长度在此处按所需方式排序 您可以使用哪个先按长度进行比较,如果长度相同,则使用字符串。compareTo。使用此根据java中包含的数字字符对单词进行排序,java,string,sorting,Java,String,Sorting,如何根据java中包含的数字字符对单词进行排序?? e、 g 拿绳子 用空格把它分成几个字 将数组转换为ArrayList 创建自定义比较器以按长度在此处按所需方式排序 您可以使用哪个先按长度进行比较,如果长度相同,则使用字符串。compareTo。使用此 public void func() { String input = "my name is dhana"; String input_array[] = input.split(" "
public void func()
{
String input = "my name is dhana";
String input_array[] = input.split(" ");
Collections.sort(input_array, new CustomComparator());
print_Array(input_array);
}
CustomComaparator.java
这是一种不需要创建自定义比较器的替代方法。我提出这个建议只是为了完整 将字符串拆分为单词。 创建一个分类地图。 迭代单词列表。 用%03d%05d.format999 aWord.length,i->aWord填充它,其中i是单词列表中aWord的索引。在这里,键的形式是xxxyyyy,其中xxx是单词长度998(表示l=1)的倒数,997(表示l=2)的倒数,因此从最长到最短排序if,yyyy允许区分相同长度的单词以及相同单词的多次出现。 结果是映射值。
,这是正确的。事实上,相同大小的字符串在输入中按位置列出。解决问题的方法是在拆分时使用正则表达式:
String str = "my name is dhana";
List<String> items = Arrays.asList(str.split("\\s+"));
print(items);
Collections.sort(items, new Comparator<String>() {
@Override
public int compare(String s0, String s1) {
// Descending order
if (s0.length() < s1.length())
return 1;
else if (s0.length() > s1.length())
return -1;
return 0;
}
});
String descOrderedString = "";
for (String item : items) {
descOrderedString += item + " ";
}
System.out.println(descOrderedString);
输出:
对于打印项目:
对于System.out.printlndescOrderedString:
你试过在谷歌上搜索主题“按长度排序java字符串”吗?到目前为止你都尝试了什么?好的,继续。如果你在这里插入了where.downvote,请回来?有趣…无需将其转换为列表,数组也可以轻松排序…您的CustomComparator编码如下,将按升序而不是降序对列表进行排序。感谢通知我:我已更改。错误:线程main java.lang.NullPointerException中的异常
public class CustomComparator implements Comparator<String>
{
public int compare(String a, String b) {
if (a.length() > b.length()) {
return -1;
} else if (a.length() < b.length()) {
return 1;
}
return a.compareTo(b);
}
}
String input= "This is a string with differently sized words. This is another sentence." ;
String[] splitInput= input.split("[ .]") ;
TreeMap<String,String> theMap= new TreeMap<String,String>() ;
int index= 0 ;
for(String word: splitInput ) {
if( word.length() > 0 ) {
String key= String.format("%03d%05d",(999-word.length()),index) ;
theMap.put(key,word);
index++;
}
}
System.out.println(theMap.values());
[differently, sentence, another, string, sized, words, This, with, This, is, is, a]
String str = "my name is dhana";
List<String> items = Arrays.asList(str.split("\\s+"));
print(items);
Collections.sort(items, new Comparator<String>() {
@Override
public int compare(String s0, String s1) {
// Descending order
if (s0.length() < s1.length())
return 1;
else if (s0.length() > s1.length())
return -1;
return 0;
}
});
String descOrderedString = "";
for (String item : items) {
descOrderedString += item + " ";
}
System.out.println(descOrderedString);
public void print(List<String> list) {
for(String s: list){
System.out.println(s);
}
}
my
name
is
dhana
dhana name my is