功能就是排序和过滤重复
文本里面的格式是这样的
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中所有数据排序反转就行了)
-
-
希望能帮助您,呵呵!