精华内容
下载资源
问答
  • 对字符串数组进行排序

    千次阅读 2019-03-05 17:12:28
    StringSort工具类: public class StringSort { private static final Log _log = LogFactory.getLog(StringSort.class);... * 对字符串数组进行排序 * @param keys * @return * */ pub...
    StringSort工具类:
    public class StringSort {
        
        private static final Log _log = LogFactory.getLog(StringSort.class);
        /**
         * 对字符串数组进行排序 
         * @param keys
         * @return
         * */
        public static String[] getUrlParam(String[] keys){
            
            for (int i = 0; i < keys.length - 1; i++) {
                for (int j = 0; j < keys.length - i -1; j++) {
                    String pre = keys[j];
                    String next = keys[j + 1];
                    if(isMoreThan(pre, next)){
                        String temp = pre;
                        keys[j] = next;
                        keys[j+1] = temp;
                    }
                }
            }
            return keys;
        }
    
        /**
         * 比较两个字符串的大小,按字母的ASCII码比较
         * @param pre
         * @param next
         * @return
         * */
        private static boolean isMoreThan(String pre, String next){
            if(null == pre || null == next || "".equals(pre) || "".equals(next)){
                _log.error("字符串比较数据不能为空!");
                return false;
            }
            
            char[] c_pre = pre.toCharArray();
            char[] c_next = next.toCharArray();
            
            int minSize = Math.min(c_pre.length, c_next.length);
            
            for (int i = 0; i < minSize; i++) {
                if((int)c_pre[i] > (int)c_next[i]){
                    return true;
                }else if((int)c_pre[i] < (int)c_next[i]){
                    return false;
                }
            }
            if(c_pre.length > c_next.length){
                return true;
            }
            
            return false;
        }
        
        
        public static void main(String[] args) {
            
            String[] keys = getUrlParam(new String[]{"fin","abc","shidema","shide","bushi"});
            
            for (String key : keys) {
                System.out.println(key);
            }
    
        }
    }
    展开全文
  • 允许用户使用字符串数组进行演奏。他们可以将字符串添加到数组中,从数组中删除字符串,在数组中搜索字符串,最终他们将能够对数组进行排序。排序使我很困惑。我尝试了几种不同的方法。第一种方法是将数组转换为...

    允许用户使用字符串数组进行演奏。他们可以将字符串添加到数组中,从数组中删除字符串,在数组中搜索字符串,最终他们将能够对数组进行排序。排序使我很困惑。我尝试了几种不同的方法。第一种方法是将数组转换为ArrayList并使用Collections对ArrayList进行排序,然后将其转换回静态类数组。没用

    我尝试的第二种方法是遍历数组,并尝试仅对用户添加的字符串进行排序,而不是对数组中的所有内容进行排序(因为数组中存在一些空值)。也许我应该遍历数组,然后将非null值存储到可以排序的新数组中?但是,如果要在对新数组排序后添加更多字符串怎么办?这就是为什么我停止使用第二种解决方案的原因。第三次尝试是在我的数组上使用Arrays.sort(),但是由于某种原因,它不起作用。

    这是例外:

    Exception in thread "main" java.lang.NullPointerException

    at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:290)

    at java.util.ComparableTimSort.sort(ComparableTimSort.java:157)

    at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)

    at java.util.Arrays.sort(Arrays.java:472)

    at java.util.Collections.sort(Collections.java:155)

    at testingSearch.sortArray(testingSearch.java:93)

    at testingSearch.main(testingSearch.java:42)

    这是我的代码:

    import java.util.Scanner;

    import java.util.Arrays;

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.List;

    public class testingSearch {

    static String[] strArray;

    static {

    strArray = new String[5];

    }

    public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    while(true){

    System.out.println("1. Add string to the string array.");

    System.out.println("2. Remove string from the string array.");

    System.out.println("3. Display strings in string array.");

    System.out.println("4. Search the string array for a string.");

    System.out.println("5. Sort the strings in the string array.");

    int userChoice = 0;

    userChoice = input.nextInt();

    switch(userChoice) {

    case 1:

    addString();

    break;

    case 2:

    removeString();

    break;

    case 3:

    displayStrings();

    break;

    case 4:

    searchArray();

    break;

    case 5:

    sortArray();

    break;

    }

    }

    }

    public static void addString(){

    Scanner input = new Scanner(System.in);

    System.out.println("What string do you want to add?");

    String userInput;

    userInput = input.nextLine();

    ArrayList stringList = new ArrayList (Arrays.asList(strArray));

    stringList.add(userInput);

    strArray = stringList.toArray(strArray);

    }

    public static void removeString(){

    Scanner input = new Scanner(System.in);

    System.out.println("What string do you want to remove?");

    String userInput;

    userInput = input.nextLine();

    ArrayList stringList = new ArrayList (Arrays.asList(strArray));

    stringList.remove(userInput);

    strArray = stringList.toArray(strArray);

    }

    public static void displayStrings(){

    for (String s: strArray){

    if (!(s == null)){

    System.out.println(s);

    }

    }

    }

    public static void searchArray(){

    Scanner input = new Scanner(System.in);

    System.out.println("What string do you want to search the array for?");

    String userInput;

    userInput = input.nextLine();

    ArrayList stringList = new ArrayList(Arrays.asList(strArray));

    if (stringList.contains(userInput)){

    System.out.println("The string array contains that string!");

    }

    else {

    System.out.println("The string array does not contain that string...");

    }

    }

    public static void sortArray(){

    /*ArrayList stringList = new ArrayList (Arrays.asList(strArray));

    Collections.sort(stringList);

    strArray = stringList.toArray(strArray);*/

    /*for (String s: strArray) {

    if (!(s == null)){

    Arrays.sort(strArray);

    }

    }*/

    List stringList = new ArrayList(Arrays.asList(strArray));

    Collections.sort(stringList);

    strArray = stringList.toArray(strArray);

    //Arrays.sort(strArray);

    }

    }

    展开全文
  • 对字符串数组 进行排序

    千次阅读 2019-06-10 11:38:51
    String[] x = {"nba","abc","cba","zz","qq","haha"}; //自己写的排序 // 排序的方法 直接用的冒泡排序 以前都是比较... = 就好了 但是 字符串的比较怎么办? 用String类提供的compareTo 方法就可以了 for(in...
            String[] x = {"nba","abc","cba","zz","qq","haha"};
    
            //自己写的排序
            // 排序的方法 直接用的冒泡排序    以前都是比较数字  直接用 >  <  =  就好了    但是 字符串的比较怎么办?  用String类提供的compareTo 方法就可以了
            for(int i=0;i<x.length;i++){
                for(int j=0;j<x.length-1-i;j++){
                    if(x[j].compareTo(x[j+1])>0){
                        String tem = x[j];
                        x[j] = x[j+1];
                        x[j+1] = tem;
                    }
                }
            }
    
    
            //使用java提供的方法进行排序
            //默认升序
            Arrays.sort(x);
            //写个比较器  变为降序排列
            Arrays.sort(x,new MyComprator());
    
            System.out.println(Arrays.toString(x));
    
    
    class MyComprator implements Comparator {
            @Override
            public int compare(Object o1, Object o2) {
                String t1=(String)o1;
                String t2=(String)o2;
                int x = t1.compareTo(t2);
                return -x;
            }
        }

     

     在java编程中,我们会偶尔遇到字符串大小比较的问题,compareTo()方法很简单就实现这种功能。该方法用于判断一个字符串是大于、等于还是小于另一个字符串。判断字符串大小的依据是根据它们在字典中的顺序决定的。

        语法:Str1.compareTo(Str2);
     

        其返回的是一个int类型值。若Str1等于参数字符串Str2字符串,则返回0;若该Str1按字典顺序小于参数字符串Str2,则返回值小于0;若Str1按字典顺序大于参数字符串Str2,则返回值大于0。

        java中的compareto方法,返回参与比较的前后两个字符串的asc码的差值,看下面一组代码

        String a="a",b="b";

        System.out.println(a.compareto.b);

        则输出-1;

        若a="a",b="a"则输出0;

        若a="b",b="a"则输出1;

       

       单个字符这样比较,若字符串比较长呢??

       若a="ab",b="b",则输出-1;

       若a="abcdef",b="b"则输出-1;

       也就是说,如果两个字符串首字母不同,则该方法返回首字母的asc码的差值;

     

      如果首字母相同呢??

      若a="ab",b="a",输出1;

      若a="abcdef",b="a"输出5;

      若a="abcdef",b="abc"输出3;

      若a="abcdef",b="ace"输出-1;

       即参与比较的两个字符串如果首字符相同,则比较下一个字符,直到有不同的为止,返回该不同的字符的asc码差值,如果两个字符串不一样长,可以参与比较的字符又完全一样,则返回两个字符串的长度差值

    compareTo 方法参考博客 :  https://blog.csdn.net/ymony/article/details/78289891

     

     

    展开全文
  • 在这里,我们按字母顺序对字符串数组进行排序,即“ John”的“ J”将在“ Chris”之后,因为“ Chris”的第一个字符是“ C”。让我们首先创建一个String数组:String[]strArr={"PQRS","AB","RSTUVW","RST","U",...

    在这里,我们按字母顺序对字符串数组进行排序,即“ John”的“ J”将在“ Chris”之后,因为“ Chris”的第一个字符是“ C”。

    让我们首先创建一个String数组:String[] strArr = { "PQRS", "AB", "RSTUVW", "RST", "U", "UVWXY", "OUJBG" };

    现在,根据第一个字符对字符串数组进行排序:Arrays.sort(strArr, (str1, str2) -> str1.charAt(0) - str2.charAt(0));

    下面是一个仅按字母顺序对字符串数组进行字母排序的示例:

    示例import java.util.Arrays;

    public class Demo {

    public static void main(String[] args) {

    String[] strArr = { "PQRS", "AB", "RSTUVW", "RST", "U", "UVWXY", "OUJBG" };

    System.out.println("Sorting array strings = ");

    Arrays.sort(strArr, (str1, str2) -> str1.charAt(0) - str2.charAt(0));

    Arrays.asList(strArr).forEach(System.out::println);

    }

    }

    输出结果Sorting array strings =

    AB

    OUJBG

    PQRS

    RSTUVW

    RST

    U

    UVWXY

    展开全文
  • python中字符串数组如何逆序排列?下面给大家介绍几种方法:1、数组倒序:原始元素的倒序排列(1)切片>>> arr = [1,2,3,4,3,4]>>> print (arr[::-1])[4, 3, 4, 3, 2, 1](2)reverse()>>> ...
  • 利用子函数按照字符串大小对字符串数组进行排序` #include<stdio.h> #include<string.h> #define N 5 /***************************************** 函数功能:编写一子函数,实现按照字符串的大小将...
  • 题目:对字符串数组进行排序,将所有变位词排在相邻的位置。变位词就是组成的字母相同,但顺序不一样的单词。 比如说:live和evil就是一对变位词。
  • 写一个函数对字符串数组进行排序,排序的规则是根据每个字符串中重复出现次数最多的字符出现的次数,在次数相同的情况下根据出现次数第二多的字符排序: 比如: “abcaba”中重复出现次数最多的是a,次数是3,第...
  • qsort是万能数组排序函数,必须要学会使用,简单的数组自然不用说,这里主要讨论一下字符串数组的使用。 首先看一下qsort的原型: 1 void qsort(void *base, size_t nmemb, size_t size, 2 i...
  • NSSortDescriptor 指定用于对象数组排序的对象的属性。 如果是Employee对象需要按照name来排序,就生成下面的descriptor NSSortDescriptor*descriptor = [NSSortDescriptorsortDescriptorWithKey:nameascending:...
  • 编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置 只要求将变位词排在一起,没有要求这些词按照什么顺序排在一起。怎么检查两个词是不是变位词呢?统计每个字符串中各个字符出现的次数,如果两者都...
  •  * 功能:对字符串数组进行排序,将所有的变位词排在相邻的位置。  */ 两种方法: 方法一: /** * 思路:套用排序算法,并修改比较器。这里比较器用来指示两个字符串胡伟变位词就是相等的。 * @param...
  • * 功能:对字符串数组进行排序,将全部的变位词排在相邻的位置。 */ 两种方法: 方法一: /** * 思路:套用排序算法,并改动比較器。这里比較器用来指示两个字符串胡伟变位词就是相等的。 * @param ...
  • 我需要按字母顺序组织一个字符串数组.从理论上讲,每个单词的首字母大写(尽管不一定,因为一个人不能始终信任用户).我已经尝试过 Arrays.sort(),但它不会运行该程序.我尝试使用compareTo(),并且在运行程序时,到达该...
  • 我的任务是将这些代码转换成反向排序,但是对于我的生活来说无法弄清楚如何去做.这些是我的sort,findlargest和swap方法.我有一种感觉,我在这里遗漏了一些明显的东西,任何帮助都会非常感激.public static void sort...
  • C#如何对字符串数组进行排序

    千次阅读 2015-11-06 15:36:41
    实例:  String[] ssss = newString[] { "2011/3", "2011/2", "2011/5... //排序方式一:使用扩展方法  IEnumerable query =ssss.OrderBy(x => x);    //排序方式二:  varsortedWords = from s in ssss  
  • 问题:编写一个方法,对字符串数组进行排序,将所有变位词排在相邻的位置。 分析:首先变位词表示两个词可以通过变化变成另一个词,一个办法就是统计所有字符出现次数,若两个字符串对应 字符出现次数都相等,表示...
  • 例如aaab(a重复3,该字符串的排序权值为3)、ababxyxy(该字符串的排序权值为2)、abcxyz(该字符串的排序权值为1),排序后应该是abcxyz、ababxyzy、aaab/***排序@param opt 要排序字符串数组*/function sort...
  • 1 import java.util.Arrays; 2 import java.util.Collections; 3 import java.util.List; 4 ... 5 public class SortDemo { ... 7 public static void main(String[] args) { ... 8 String[] suits...
  • 数据异常值的过滤在数据分析中,经常需要检测数据结构中的异常值。我们还是举个例子,先来创建一个包含三列的DataFrame对象,每一列都包含1000个...j接下来,根据每一列的标准差,DataFrame对象的所有元素进行过滤...
  • 1、字符串# 字符串数字之间转换# x = int("6")# print type(x) ## y = str(6)# print type(y) #注:在python中,字符串和数值型是可以直接通过调用函数转换。# 字符串长度方法# foo = 'abc'# print len(foo)# print ...
  • #include #include #include #include #include #include using namespace std; string sortChars(string s){ ...当然在编程珠玑2.4中,也论述了变位词除了排序,也可以用统计各字符出现次数来判断

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,338
精华内容 935
关键字:

对字符串数组进行排序