java求数组元素重复次数和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;
}

时间: 2024-11-02 20:43:56

java求数组元素重复次数和java字符串比较大小示例_java的相关文章

五款java 删除数组元素与重复数组实例代码

五款java 删除数组元素与重复数组实例代码 本文章从网络上收藏了java 删除数组元素哦,各种删除数组元素都有自己的方法,这里不但可以删除数组元素而还可以删除重复的数组元素实例. package com.lzy; import java.util.hashset; import java.util.set; public class test {  /**   * @param args   */  public static void main(string[] args) {   // t

求数组元素的全排列,数组不含重复元素

Permutations Given a collection of numbers, return all possible permutations. For example, [1,2,3] have the following permutations:     [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1]. 求数组元素的全排列,数组不含重复元素 算法1:递归 类似于DFS的递归. 对于包含n个元素的数组,先确定第一位置

运用javascript如何去除数组中重复的数字或者字符串?

问题描述 运用javascript如何去除数组中重复的数字或者字符串? 运用javascript如何去除数组中重复的数字或者字符串?谢谢了.方法越多越好,谢谢. 解决方案 JavaScript实现数组去除重复整理 javascript 去除数组中重复项的几种方法 解决方案二: 本人只会用JAVA写

java byte数组与int,long,short,byte的转换实现方法_java

实例如下: public class DataTypeChangeHelper { /** * 将一个单字节的byte转换成32位的int * * @param b * byte * @return convert result */ public static int unsignedByteToInt(byte b) { return (int) b & 0xFF; } /** * 将一个单字节的Byte转换成十六进制的数 * * @param b * byte * @return conv

Java 8新的时间日期库的20个使用示例_java

原文:http://it.deepinmind.com/java/2015/03/17/20-examples-of-date-and-time-api-from-Java8.html 除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API.Java对日期,日历及时间的处理一直以来都饱受诟病,尤其是它决定将java.util.Date定义为可修改的以及将SimpleDa

Java使用设计模式中迭代器模式构建项目的代码结构示例_java

迭代器(Iterator)模式,又叫做游标(Cursor)模式.GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节.  迭代器模式由以下角色组成:迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口. 具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置. 容器角色(Container):容器角色负责提供创建具体迭代器角色的接口. 具体容器角色(Concrete

Java求数组中连续n个元素使其和最大

给定一个数组,求出数组中连续的一些元素使其和的值最大.如果所有元素都为正数,显然整个数组即为所求的.如果所有元素的值为负数,则所求的最大值为0. 这是在编程珠玑上看到的,其时间复杂度由O(n3)减为O(n)了. java代码 package cn.lifx.test; public class MaxSum { public static void main(String[] args) { int[] arr = new int[]{31, -41, 59, 26, -53, 58, 97,

java 删除数组元素与删除重复数组元素

删除数组借助于list  代码如下 复制代码 private String[] removePaths(String path, String[] srcpaths) {   List<String> list = new ArrayList<String>();   int k = srcpaths.length;//原字符串长度   int i=0;   while(i<k){    if(!srcpaths[i].equals(path)){     list.add(

java 删除数组元素与删除重复数组元素的代码_java

删除数组借助于list 复制代码 代码如下: private String[] removePaths(String path, String[] srcpaths) {  List<String> list = new ArrayList<String>();  int k = srcpaths.length;//原字符串长度  int i=0;  while(i<k){   if(!srcpaths[i].equals(path)){    list.add(srcpat