永发信息网

想用Java写一个排序和过滤重复的小程序

答案:4  悬赏:50  手机版
解决时间 2021-05-23 09:51

功能就是排序和过滤重复

文本里面的格式是这样的

1065089801----w*****899586!
86444893----waizhang******ue
920210676----O13756*******OOO
601732183----wsxln****345
759483643----132******4680

中间有四个----符号 目的是前面的账号依次从小到大排列然后输出的时候跟着后面的密码还是在原来账号的后面 并且过滤有重复的账号

和朋友讨论用集合 但是最终还是没有实现功能 不知道用hasmap 能不能实现 希望高手帮忙解答

最佳答案

看了楼上的见解 我也说两句 由于房主说的还不是非常详细 无法确定账号相同的时候 密码也相同 至少我没能看出这点(也许我笨) 呵呵 所以我还是觉得 用hashtable 或者 hashmap 来做比较好


他们存放数据的结构都是<key,value> key不能重复 value可以重复


不同的是HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)


当然 还有 同步 等其他不同 你可以根据需要选择用哪一个


然后从文本读取数据 把账号 和密码 处理出来


--------》第一行1065089801----w*****899586!


截取出账号1065089801 密码w*****899586!


然后将账号做为key 密码做 value 插入到hashtable 或者 hashmap 中


插入时 用 containsKey(Object key) 方法 判断一下 key 是否重复 重复就不插


这样绝对能保证账号的唯一性


排序的方法也很多 就是是取出所有key值 放到ArrayList 等 容器里 然后调用它们的sort方法 进行排序


然后取数据的时候 通过排好序的 key 获取 value


http://www.cnblogs.com/kentyshang/archive/2007/07/04/805397.html


你可以看看API 或者 google 一下 有很多资料


全部回答

给你个想法 可以自己试着去做

首先顶一个数组 循环的把信息读进去

然后排序 对数组中的单个元素进行拆分“----”

比对第一个元素进行再次排序存放

你也可以在排序的过程判断是否有存在重复的号码

也可以在完全排序完以后再进行一次查看是否有重复账号

总的来说就是这样的一个操作过程

我自己感觉 用任何一个集合都是可以实现的

只要能存放1065089801----w*****899586!这样的数据就可以

1.先排重 hashset可以排重。 String[] single = { "1065089801----w*****899586!", "86444893----waizhang******ue ", ...... };

Set set = new HashSet();

for (int i = 0; i < single.length; i++) {

set.add(single[i]);//将所有元素放入set,因为set里面元素不重复,会自动替换重复的

}

2.排序

int k = set.size();//取set的里面元素个数,以便定义新数组的长度 int j=0; String[] single2 = new String[k];//用set的元素个数定义数组长度 for (Iterator iterator = set.iterator(); iterator.hasNext();) { single2[j] = iterator.next().toString();//遍历set,放入新数组 j++;//新数组的计数器 }

调用

Arrays.sort(single2);进行排序。

估计效率肯定不高 但是应该能解决问题。

建议使用List接口下的ArrayList类..

首先按正行读取数据(字符串形式)到ArrayList中

比如:

第一行1065089801----w*****899586!

第二行86444893----waizhang******ue

但要注意,读取数据到ArrayList之前要判断是否已经存在,可以使用ArrayList类中的public boolean contains(Object elem)方法来判断该行是否已经存在(不用担心,帐号重复的,密码也一定一样),如果存在就不用放在ArrayList中了..

都读完后,ArrayList中就是所有不重复的数据了。

然后排序可以使用Collections类中的静态方法public static <T extends Comparable<? super T>> void sort(List<T> list)对该ArrayList进行排序,因为你的数据都是字符串,String类已经默认实现了Comparable接口,所以sort方法可以按升序排序你ArrayList中所有数据(你如排序后,你又想降序排列,可以使用Collections类中的静态方法public static void reverse(List<?> list)将ArrayList中所有数据排序反转就行了)

-

-

希望能帮助您,呵呵!

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
没什么钱开什么店好
甲乙两人同时骑车由A地到相距60千米的B地,甲
换了Q币能在其它地方花不
关于PSP3000最新6.10系统的SensMe channels问
青春兵荒马乱,忧患意思是什么
问问如何快速增加经验?
汤山工人疗养院地址在什么地方,想过去办事
谁有几个好玩的高配置单机游戏啊
买房的五证是什么,化妆品生产企业一照五证是
手机QQ空间相册什么时候能维修好?
深圳西离深圳北有多远,深圳——青岛之间的飞
为什么我的E71连电脑总死机?
春秋q传怎么解除变身?
新建铁路洛阳至湛江铁路通道益阳至娄底段经过
春谊宾馆-会议厅地址在什么地方,想过去办事
推荐资讯
超叼的句子混社会,描写黑道打斗的句子
张湾区十堰学无境教育(张湾校区)地址在哪,我
越南人用英文怎么说,你是不是越南人?越南翻
damage、destroy与harm的区别.
利用氧化还原反应原理配平
东游记幸运宝石是会掉的还是从npc买?
黄石港区黄石迎宾超市这个地址在什么地方,我
为什么索爱w595c不能和电脑连接啊??
摩托车5年没检
为什么我的电脑的无线网的指示灯不亮啊?
潜江市潜江中国联通(江汉路营业厅)在什么地方
穿越重生科举耽美文,关于科举的诗句
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?