mysql存bitset_用bitSet做百万级ip去重

import java.util.BitSet;

import java.util.HashMap;

public class DistcIp {

public static void main(String[] args) {

HashMap groupBitSet=new HashMap();

//先遍历ip,

String ip1="192.168.0.3";

String ip2="192.168.0.4";

String ip3="192.162.0.6";

String ip4="192.162.0.6";

String ip5="192.157.0.4";

String[] strs=new String[] {ip1,ip2,ip3,ip4,ip5};

for (String cip : strs) {

String group=getBitSetGroup4IP(cip);

int value=getBitSetValue4IP(cip);

if(groupBitSet.containsKey(group)) {

groupBitSet.get(group).set(value);

}else {

BitSet bs= new BitSet();

bs.set(value);

groupBitSet.put(group, bs);

}

}

String group2=getBitSetGroup4IP(ip1);

int value2=getBitSetValue4IP(ip1);

BitSet bs=groupBitSet.get(group2);

System.out.println(bs.get(value2));

String group3=getBitSetGroup4IP("192.168.0.1");

int value3=getBitSetValue4IP("192.168.0.1");

BitSet b3=groupBitSet.get(group3);

System.out.println(b3.get(value3));

}

/**

* 用来构建BitSet数值;

* @param ip

* @return int

*/

static int getBitSetValue4IP(String ip){

String[] ips=ip.split("\\.");

if(ips.length!=4) return 0;

String tmp=formatVal(ips[2])+formatVal(ips[3]);

return Integer.valueOf(tmp);

}

/**

* 用来构建BitSet分组;

* @param ip

* @return String

*/

String getBitSetGroup4IP(String ip){

String[] ips=ip.split("\\.");

if(ips.length!=4) return null;

return ips[0]+"."+ips[1];

}

//这个是用来补零的,如:125.42.1.8 ->125.042.001.008

static String formatVal(String s) {

String res="";

char[] ca=s.toCharArray();

for(int i=ca.length;i<3;i++) {

res+="0";

}

return res+s;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值