JAVA数组去重和JavaScript数组去重比较

JS的直觉方案:
对于数组去重,只要写过程序的,立刻就能得到第一个解法:

function unique(arr) {
  var ret = []

  for (var i = 0; i < arr.length; i++) {
    var item = arr[i]
    if (ret.indexOf(item) === -1) {
      ret.push(item)
    }
  }

  return ret
}

优化方案:

核心是构建了一个 hash 对象来替代 indexOf. 注意在 JavaScript 里,对象的键值只能是字符串,因此需要 var key = typeof(item) + item 来区分数值 1 和字符串 ‘1’ 等情况

function unique(arr) {
  var ret = []
  var hash = {}

  for (var i = 0; i < arr.length; i++) {
    var item = arr[i]
    var key = typeof(item) + item
    if (hash[key] !== 1) {
      ret.push(item)
      hash[key] = 1
    }
  }

  return ret
}

灵活应用:

totalIncomeList =[]; //模拟数据
        totalIncomeList.push({tranDate:'20180023',tranAmt:'1100'})
        totalIncomeList.push({tranDate:'20171122',tranAmt:'1100'})
        totalIncomeList.push({tranDate:'20190345',tranAmt:'300'})
        totalIncomeList.push({tranDate:'20171232',tranAmt:'1540'})
        totalIncomeList.push({tranDate:'20171230',tranAmt:'1540'})

        //排序算法.
        if(totalIncomeList && totalIncomeList.length>0){
            for(let i = 0 ; i<totalIncomeList.length; i++){
                for(let j = 0; j <totalIncomeList.length-i-1; j++){
                    let firtStr = totalIncomeList[j].tranDate.substring(0,4);
                    let lastStr = totalIncomeList[j+1].tranDate.substring(0,4);
                    if(firtStr < lastStr){
                        let temp = totalIncomeList[j + 1];
                        totalIncomeList[j+ 1] = totalIncomeList[j];
                        totalIncomeList[j] = temp;
                    }
                }
            }
            //去重算法
            var ret = [];
            for(let y=0;y<totalIncomeList.length;y++) {
                let item = totalIncomeList[y].tranDate.substring(0,4);;
                if (ret.indexOf(item) === -1) {
                    ret.push(item)
                    totalIncomeList[y].isHeader =true;
                }else{
                    totalIncomeList[y].isHeader =false;
                }
            }

ReactNative做的app的显示效果:
这里写图片描述

===========完美分割线=====================

赘述:JAVA中的数组去重。

  • 方式1
package com.panda;

import java.util.Arrays;

public class Test3 {

        public int removeDuplicates(int[] nums) {
            if (nums == null)
                return 0;
            if (nums.length == 1)
                return 1;
            int current = 0;
            int next = 1;
            int len = nums.length;
            while (next < len) {
                if (nums[next] == nums[current]) {
                    for (int j = next; j < len - 1; j++) {
                        nums[j] = nums[j + 1];
                    }
                    len--;
                }
                if (nums[next] != nums[current]) {
                    next++;
                    current++;
                }
            }

            return len;
        }
    public static void main(String[] args) {
        int [] rows ={3,5,3,5,1,2,7,2};
            int removeDuplicates = new Test3().removeDuplicates(rows);
            System.out.println(removeDuplicates);
    }
}
  • 方式2
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;


public class TestList {

    public static void main(String[] args) {
        /**
         *List: 可以按顺序存放你存入的数据,当你删除第 N 个元素后, N 后边的元素会逐个向前移
         *Set:是无序存放你存入的数据, 需要使用键值对
         *
         * 你可以通过使用下边的方式 去除一个 List 内重复的数据
         */
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 1, 2, 3 );
        Set set = new HashSet<Integer>(list);    
        list = new ArrayList<Integer>(set);

        System.out.println(list);

    }

}
  • 方式N …
发布了117 篇原创文章 · 获赞 29 · 访问量 24万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章