JAVA通过数组按首字母排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA通过数组按首字母排序相关的知识,希望对你有一定的参考价值。

例John Bill Peter
按升序输出Bill John Peter
倒序如何改?

参考技术A package demo;

import java.util.Arrays;

public class Test

public void sortStringArray()
String[] arrayToSort = new String[] "Oscar", "Charlie", "Ryan",
"Adam", "David","aff","Aff" ;
System.out.println();
System.out.println("字符型数组排序,排序前:");
for (int i = 0; i < arrayToSort.length; i++)
System.out.print(arrayToSort[i]+",");

System.out.println();
System.out.println("排序后:");
// 调用数组的静态排序方法sort,且不区分大小写
Arrays.sort(arrayToSort,String.CASE_INSENSITIVE_ORDER);

for (int i = 0; i < arrayToSort.length; i++)
System.out.print(arrayToSort[i]+",");



public static void main(String[] args)
new Test().sortStringArray();




运行结果:
字符型数组排序,排序前:
Oscar,Charlie,Ryan,Adam,David,aff,Aff,
排序后:
Adam,aff,Aff,Charlie,David,Oscar,Ryan,
希望对你有帮助本回答被提问者和网友采纳
参考技术B static void sort(Object[] a)
这个方法按照字母顺序排序,如果不满意的话你还可以自己写比较器。
static <T> void sort(T[] a, Comparator<? super T> c) ;
参考技术C public static void main(String[] args)
String[] s = "John","Bill","Peter","Abc";
reverseArray(s);

public static void reverseArray(String[] arr)
Arrays.sort(arr);
List<String> list = Arrays.asList(arr);
Collections.reverse(list);
System.out.println( list );

按首字母分组排序数组

  1  
  2 
  3 // 按首字母分组排序数组
  4 
  5 -(NSMutableArray *)sortObjectsAccordingToInitialWith:(NSArray *)arr 
  6 
  7     
  8 
  9     // 初始化UILocalizedIndexedCollation
 10 
 11     UILocalizedIndexedCollation *collation = [UILocalizedIndexedCollation currentCollation];
 12 
 13     
 14 
 15     //得出collation索引的数量,这里是27个(26个字母和1个#)
 16 
 17     NSInteger sectionTitlesCount = [[collation sectionTitles] count];
 18 
 19     //初始化一个数组newSectionsArray用来存放最终的数据,我们最终要得到的数据模型应该形如@[@[以A开头的数据数组], @[以B开头的数据数组], @[以C开头的数据数组], ... @[以#(其它)开头的数据数组]]
 20 
 21     NSMutableArray *newSectionsArray = [[NSMutableArray alloc] initWithCapacity:sectionTitlesCount];
 22 
 23     
 24 
 25     //初始化27个空数组加入newSectionsArray
 26 
 27     for (NSInteger index = 0; index < sectionTitlesCount; index++) 
 28 
 29         NSMutableArray *array = [[NSMutableArray alloc] init];
 30 
 31     
 32 
 33     
 34 
 35     //将每个名字分到某个section下
 36 
 37     for (ContactsUserModel *userModel in _aryUser )
 38 
 39         //获取name属性的值所在的位置,比如"林丹",首字母是L,在A~Z中排第11(第一位是0),sectionNumber就为11
 40 
 41 //        trueName model 对应的属性名
 42 
 43         
 44 
 45         NSInteger sectionNumber = [collation sectionForObject:userModel collationStringSelector:@selector(trueName)];
 46 
 47         //把name为“林丹”的p加入newSectionsArray中的第11个数组中去
 48 
 49         NSMutableArray *sectionNames = newSectionsArray[sectionNumber];
 50 
 51         [sectionNames addObject:userModel];
 52 
 53         
 54 
 55         
 56 
 57         NSLog(@"sectionNames===%@",sectionNames);
 58 
 59         
 60 
 61     
 62 
 63     
 64 
 65     NSLog(@"newSectionsArray==%@",newSectionsArray);
 66 
 67     
 68 
 69     
 70 
 71     //对每个section中的数组按照name属性排序
 72 
 73     for (NSInteger index = 0; index < sectionTitlesCount; index++) 
 74 
 75         NSMutableArray *personArrayForSection = newSectionsArray[index];
 76 
 77         NSArray *sortedPersonArrayForSection = [collation sortedArrayFromArray:personArrayForSection collationStringSelector:@selector(name)];
 78 
 79         newSectionsArray[index] = sortedPersonArrayForSection;
 80 
 81     
 82 
 83     NSLog(@"newSectionsArray==%@",newSectionsArray);
 84 
 85  
 86 
 87     //    //删除空的数组
 88 
 89         NSMutableArray *finalArr = [NSMutableArray new];
 90 
 91     _sectionTitles =[NSMutableArray array];
 92 
 93     [_sectionTitles addObject:@"部门"];
 94 
 95     
 96 
 97  
 98 
 99         for (NSInteger index = 0; index < sectionTitlesCount; index++) 
100 
101             
102 
103             if (((NSMutableArray *)(newSectionsArray[index])).count != 0) 
104 
105                 [finalArr addObject:newSectionsArray[index]];
106 
107                 [self.sectionTitles addObject: [[collation sectionTitles] objectAtIndex:index]];
108 
109                 
110 
111                 
112 
113             
114 
115         
116 
117     
118 
119     return finalArr;//删除没有值的数组
120 
121  
122 
123     
124 
125 //    return newSectionsArray;
126 
127  
128 
129 
130 
131  
132 
134 
135 #pragma mark SectionTitles
136 
137 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
138 
139 
140 
141     return self.sectionTitles[section];
142 
143 
144 
145  
146 
147 - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
148 
149 
150 
151     return self.sectionTitles;
152 
153 

 

以上是关于JAVA通过数组按首字母排序的主要内容,如果未能解决你的问题,请参考以下文章

Java编程实现中英混合字符串数组按首字母排序的方法

Java编程实现中英混合字符串数组按首字母排序的方法

Java编程实现中英混合字符串数组按首字母排序的方法

Java编程实现中英混合字符串数组按首字母排序的方法

按首字母分组排序数组

JAVA 汉字首字母排序