java求数组元素重复次数和java字符串比较大小示例

代码如下:

/**
 * Name: 求数组中元素重复次数对多的数和重复次数
 * Description:
 * 数组中的元素可能会重复,这个方法可以找出重复次数最多的数,同时可以返回重复了多少次。
 * 但需要知道这个数组中最大的元素是多少,如果无法确定,就悲剧啦~
 *
 * @param array目标数组;
 *           max数组中数据的最大值;
 * @return 返回一个包含重复次数最多的数(value)和重复次数(maxCount)的map集合;
 *                  内部出现异常,默认返回0;
 * @throws
 * @Author 杨元
 */
public static Map<String, Integer> arraySearch(int[] array,int max){
  //结果集合
  Map<String, Integer> resultMap = new HashMap<String, Integer>();
  //重复的次数
  int maxCount = 0;
  //重复次数对多的数
  int value = 0;

try{
    //初始化数据数组,用来存放每个元素出现的次数
    int[] dataArray = new int[max+1];

//遍历要查找的数组,以每个元素为下标,直接定位数据数组,进行+1操作,表示出现了一次
    for(int i : array){
      dataArray[i]++;
    }

//找到数据数组中最大值
    for(int i=0;i<dataArray.length;i++){
      if(dataArray[i]>maxCount){
        maxCount=dataArray[i];
        value=i;
      }
    }
  }catch (Exception e) {}

resultMap.put("maxCount", maxCount);
  resultMap.put("value", value);

return resultMap;
}

/**
 * Name: 比较两个字符串大小
 * Description: 比较的规则和数据库中的order by效果一致;
 *                 null自动转为空,空字符串最大;
 *
 * @param first 要比较的第一个字符串;
 *           second 要比较的第二个字符串;
 * @return first大于second返回正数;
 *            first等于second返回0;
 *         first小于second返回负数;
 *         内部异常默认返回0;
 *         返回值非固定值哦~~;
 * @throws
 * @Author 杨元
 */
public static int compareString(String first,String second){
  int result = 0;

try{
    //null转空
    first = first==null?"":first;
    second = second==null?"":second;

//预先记录字符串长度,避免反复读取
    int firstLength=first.length();
    int secondLength=second.length();

//处理含有空串的特殊情况
    if("".equals(first) || "".equals(second)){
      //谁长谁小
      result = secondLength-firstLength;
    }else{
      //临时空间,用来存放ascii码总和
      int firstCount = 0;
      int secondCount = 0;
      //用纯运算得出两个数中较小的数,实在是bt
      int minLength = (secondLength*(firstLength/secondLength) + firstLength*(secondLength/firstLength))/(firstLength/secondLength + secondLength/firstLength);
      //按两个字符串中较短的位数去逐位截取,防止越界
      for(int i=0;i<minLength;i++){
        //求ascii码和
        firstCount+=first.substring(i,i+1).getBytes()[0];
        secondCount+=second.substring(i,i+1).getBytes()[0];
        //和不相等,说明已经比较出了大小
        if(firstCount!=secondCount){
          break;
        }
      }

if(firstCount==secondCount){
        //长度长的大
        result = firstLength-secondLength;
      }else{
        //总和大的大
        result = firstCount-secondCount;
      }
    }
  }catch (Exception e) {}

return result;
}

(0)

相关推荐

  • Java 生成随机字符串数组的实例详解

    Java 生成随机字符串数组的实例详解 利用Collections.sort()方法对泛型为String的List 进行排序.具体要求: 1.创建完List<String>之后,往其中添加十条随机字符串 2.每条字符串的长度为10以内的随机整数 3.每条字符串的每个字符都为随机生成的字符,字符可以重叠 4.每条随机字符串不可重复 将涉及到的知识有: String.StringBuffer.ListArray.泛型.Collections.sort.foreach.Random等相关知识,算是

  • java String[]字符串数组自动排序的简单实现

    如下所示: import java.util.Arrays; public class xulie { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String []str = {"abc","bca","cab","cba","aaa","111&

  • Java中char数组(字符数组)与字符串String类型的转换方法

    本文实例讲述了Java中char数组(字符数组)与字符串String类型的转换方法.分享给大家供大家参考,具体如下: 在Java语言编程时,使用"口令字段"jPasswordField组件时,如果要获得密码值,就需要使用该组件的getPassword()方法.jPasswordField的getPassword()方法返回一个char类型的数组,我们经常需要将这个数组转换为String类型,以便进行诸如口令匹配或口令赋值等操作.这时,就需要将char类型的数组进行转换.当然也经常会遇到

  • 详解Java中的数组与字符串相关知识

    Java数组的定义和使用 如果希望保存一组有相同类型的数据,可以使用数组. 数组的定义和内存分配 Java 中定义数组的语法有两种: type arrayName[]; type[] arrayName; type 为Java中的任意数据类型,包括基本类型和组合类型,arrayName为数组名,必须是一个合法的标识符,[ ] 指明该变量是一个数组类型变量.例如: int demoArray[]; int[] demoArray; 这两种形式没有区别,使用效果完全一样,读者可根据自己的编程习惯选择

  • 浅谈java 字符串,字符数组,list间的转化

    1.关于java.lang.string.split xxx.split()方法可以将一个字符串分割为子字符串,然后将结果作为字符串数组返回. 2.字符串转字符数组 String str =" aa.png,a2.png,a3.png"; String[] arrayStr =new String[]{}; arrayStr = str.split(","); 3.字符数组转list List list = java.util.Arrays.asList(array

  • java字符串数组进行大小排序的简单实现

    若是将两个字符串直接比较大小,会包:The operator > is undefined for the argument type(s) java.lang.String, java.lang.String的错误. 字符串比较大小可以用字符串长度或者是比较字符串内字符的ASCII码值,前者太简单,就不进行讲述记录. 字符串用ASCII码比较大小,规则是: 1.比较首字母的ASCII码大小 2.若是前面的字母相同,则比较之后的字母的ASCII码值 3.若是一个字符串从首字母开始包含另一个字符串

  • Java中字符串与byte数组之间的相互转换

    前言 Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型,java在字符与数组转换也是非常方便的.下面跟我一起来了解一下字符串与byte之间转换的原理 原理 我们都知道,在Java里byte类型是占用1个字节,即8位的,而16进制的字符占用4位,所以每个byte可以用两个字符来表示,反之亦然. 举个例子 byte = 123 用二进制表示:0111 1011 每4位用字符表示: 7 b 是的,原理就这么简单,接下来用代码实现: byte[] 转1

  • java实现字符串转String数组的方法示例

    本文实例讲述了java实现字符串转String数组的方法.分享给大家供大家参考,具体如下: package Tsets; import java.util.Arrays; import java.util.List; public class String2StringList { public static List<String> stringToList(String str){ return Arrays.asList(str.split(",")); } publ

  • java 中文字符串数组按照音序排列

    复制代码 代码如下: public class SortComparator implements Comparator{ public int compare(Object o1,Object o2) { try{ byte[] buf1 = ((String) o1).getBytes("unicode"); byte[] buf2 = ((String) o2).getBytes("unicode"); int size = Math.min(buf1.len

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

    本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法.分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序.例如: String[] arrays = new String[] { "gyu", "sdf", "zf", "大同", "收到", "地方", "三等分"

  • 举例讲解Java中数组和字符串类型的使用方法

    Java数组 数组是具有相同数据类型的一组数据的集合,Java支持多为数组,一维数组的每个基本单元都是基本数据类型的数据,二维数组就是每个基本单元是一维数组的一维数组,以此类推,n维数组的每个基本单元都是n-1为数组的n-1维数组.下面以一维数组为例说明Java数组的用法. 1.数组声明 数组声明有如下两种形式(方括号的位置不同): int arr[]; int[] arr2; 2.数组初始化 数组初始化也有两种形式,如下(使用new或不使用new): int arr[] = new int[]

随机推荐