如何按字母顺序排序,而忽略区分大小写? [英] How to sort alphabetically while ignoring case sensitive?
本文介绍了如何按字母顺序排序,而忽略区分大小写?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个code,但只有小写字母工程... 我想这是对列表进行排序,而忽视了大写字母。
包sortarray.com;
进口的java.util.ArrayList;
进口的java.util.List;
进口android.app.Activity;
进口android.os.Bundle;
进口android.util.Log;
进口android.widget.TextView;
公共类SortArray延伸活动{
ArrayList的<的String []> matchedFruits =新的ArrayList<的String []>();
TextView的选择;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
串水果[] =新的String [7]; //排序后的数组
水果[0] =苹果;
水果[1] =杏;
水果[2] =香蕉;
水果[3] =芒果;
水果[4] =甜瓜;
水果[5] =菠萝;
水果[6] =桃花;
焦炭currChar =水果[0] .charAt(0); //获取第一个元素的第一个字符
布尔匹配= FALSE;
INT LEN = fruits.length;
名单<字符串> TMP =新的ArrayList<字符串>();
的for(int i = 1; I< LEN;我++){
Log.d(比较,水果[I] .charAt(0)+,+ currChar);
如果(水果[I] .charAt(0)== currChar){
如果(匹配== FALSE)//新的匹配?
{
比赛= TRUE; //重新设置搜索
tmp.clear(); //清除现有项目
tmp.add(水果[我 - 1]);
Log.d(已启动新列表,水果[我 - 1]);
} 其他 {
tmp.add(水果[我 - 1]);
Log.d(添加到列表,水果[我 - 1]);
}
} 其他 {
比赛= FALSE;
tmp.add(水果[我 - 1]);
matchedFruits.add(tmp.toArray(新的String [tmp.size())); //添加到
// 最终
//名单
Log.d(完成列表,水果[我 - 1]);
tmp.clear(); //清除现有项目
}
currChar =水果[Ⅰ] .charAt(0);
}
tmp.add(水果[LEN - 1]);
matchedFruits.add(tmp.toArray(新的String [tmp.size())); //将剩
//项目
的printList();
}
无效的printList()
{
//打印列表
TextView中选择=(TextView中)findViewById(R.id.tv);
字符串mssg =;
的for(int i = 0; I< matchedFruits.size();我++)
{
串TMP2 [] = matchedFruits.get(ⅰ);
对于(INT J = 0; J< tmp2.length; J ++){
//Log.d("Final名单,阵#+ I +[+ J +],+ TMP2 [J]);
mssg + = TMP2 [J]的ToString();
}
//selection.setText("\n);
selection.setText(mssg);
}
}
}
解决方案
这里是最好的方式一个普通的Java例子来做到这一点:
进口的java.util.ArrayList;
进口java.util.Collections中;
进口了java.util.Comparator;
进口的java.util.List;
公共类分拣机{
串水果[] =新的String [7];
名单<字符串> LST;
分拣机(){
LST =新的ArrayList<字符串>();
//初始化排序的数组
水果[0] =甜瓜;水果[1] =杏;水果[2] =桃花;
水果[3] =芒果;水果[4] =苹果;水果[5] =菠萝;
水果[6] =香蕉;
}
公共静态无效的主要(字串[] args){
分拣机SRT =新的分拣机();
srt.anyOldUnstaticMethod();
}
公共无效anyOldUnstaticMethod(){
Collections.addAll(LST,水果);
的System.out.println(初步名单);
对于(字符串S:LST)
的System.out.println(多个);
Collections.sort(LST);
的System.out.println(\ nSorted表);
对于(字符串S:LST)
的System.out.println(多个);
Collections.sort(LST,新SortIgnoreCase());
的System.out.println(\ nSorted忽略案例列表);
对于(字符串S:LST)
的System.out.println(多个);
}
公共类SortIgnoreCase实现比较<对象> {
公众诠释比较(对象01,对象02){
字符串S1 =(字符串)01;
字符串s2 =(字符串)O2;
返回s1.toLowerCase()的compareTo(s2.toLowerCase())。
}
}
}
i have this code, but works only for lower case letters... i want this to sort the list while ignoring the upper case letters..
package sortarray.com;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class SortArray extends Activity {
ArrayList<String[]> matchedFruits = new ArrayList<String[]>();
TextView selection;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String fruits[] = new String[7];// Sorted array
fruits[0] = "apple";
fruits[1] = "apricot";
fruits[2] = "banana";
fruits[3] = "mango";
fruits[4] = "melon";
fruits[5] = "pineapple";
fruits[6] = "peach";
char currChar = fruits[0].charAt(0);// Get first char of first element
boolean match = false;
int len = fruits.length;
List<String> tmp = new ArrayList<String>();
for (int i = 1; i < len; i++) {
Log.d("Comparing ", fruits[i].charAt(0) + "," + currChar);
if (fruits[i].charAt(0) == currChar) {
if (match == false)// new match?
{
match = true;// Reset search
tmp.clear();// clear existing items
tmp.add(fruits[i - 1]);
Log.d("Started new list ", fruits[i - 1]);
} else {
tmp.add(fruits[i - 1]);
Log.d("Added to list ", fruits[i - 1]);
}
} else {
match = false;
tmp.add(fruits[i - 1]);
matchedFruits.add(tmp.toArray(new String[tmp.size()]));// add to
// final
// list
Log.d("Finished a list ", fruits[i - 1]);
tmp.clear();// clear existing items
}
currChar = fruits[i].charAt(0);
}
tmp.add(fruits[len - 1]);
matchedFruits.add(tmp.toArray(new String[tmp.size()]));// add left over
// items
printList();
}
void printList()
{
//Print the list
TextView selection = (TextView) findViewById(R.id.tv);
String mssg="";
for(int i=0;i<matchedFruits.size();i++)
{
String tmp2[]= matchedFruits.get(i);
for (int j = 0; j < tmp2.length; j++) {
//Log.d("Final list", "Array #" + i + "[" + j + "]," + tmp2[j]);
mssg += tmp2[j].toString();
}
//selection.setText("\n");
selection.setText(mssg);
}
}
}
解决方案
Here's a plain java example of the best way to do it:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Sorter {
String fruits[] = new String[7];
List<String> lst;
Sorter() {
lst = new ArrayList<String>();
// initialise UNSORTED array
fruits[0] = "Melon"; fruits[1] = "apricot"; fruits[2] = "peach";
fruits[3] = "mango"; fruits[4] = "Apple"; fruits[5] = "pineapple";
fruits[6] = "banana";
}
public static void main(String[] args) {
Sorter srt = new Sorter();
srt.anyOldUnstaticMethod();
}
public void anyOldUnstaticMethod() {
Collections.addAll(lst, fruits);
System.out.println("Initial List");
for (String s : lst)
System.out.println(s);
Collections.sort(lst);
System.out.println("\nSorted List");
for (String s : lst)
System.out.println(s);
Collections.sort(lst, new SortIgnoreCase());
System.out.println("\nSorted Ignoring Case List");
for (String s : lst)
System.out.println(s);
}
public class SortIgnoreCase implements Comparator<Object> {
public int compare(Object o1, Object o2) {
String s1 = (String) o1;
String s2 = (String) o2;
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
}
}
这篇关于如何按字母顺序排序,而忽略区分大小写?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文