黑马程序员技术交流社区
标题:
关于数组的问题
[打印本页]
作者:
zhangx
时间:
2013-4-16 14:51
标题:
关于数组的问题
比如一个String类型的数组str={a,sd,er,f,a,sd,sd,a,f,a}长度为10,通过什么方法能将其重复元素去掉,变成一个长度为4的数组。
作者:
PANZERLEADER
时间:
2013-4-16 15:15
如果你知道hashSet去重功能的话,也许能解决你的问题;
写个简单的代码解决你的问题吧;
import java.util.HashSet;
import java.util.Set;
public class SetTest {
public static void main(String[] args) {
String [] test = {"a","sd","er","f","a","sd","sd","a","f","a"};
Set<String> set = new HashSet<String>();
for(String t : test){
set.add(t);
}
System.out.println("集合test个数:"+test.length);
System.out.println("去重后集合在还剩下数据个数:"+set.size());
}
}
如果追求顺序性,考虑用linkedHashSet 链表去重,去重原理还是构建二叉树数据结构,比较hashcode和equas ,只是二叉树数据结构在时间复杂度上更为优异·
作者:
杨冉
时间:
2013-4-16 16:52
直接用Set集合不能重复的特性就好了,遍历字符串数组然后再存进TreeSet中就好了,代码如下
public class Test {
public static void main(String[] args) {
String[] str = { "a", "sd", "er", "f", "a", "sd", "sd", "a", "f", "a" };
for (String s : removeRep(str))
System.out.println(s);
}
public static String[] removeRep(String[] str) {
Set<String> set = new TreeSet<String>();
for (String s : str) {
set.add(s);
}
return set.toArray(new String[0]);
}
}
复制代码
作者:
奋斗2013
时间:
2013-4-16 16:52
list集合
允许有重复的对象
。其中的对象有一定的顺序,便于快速方问。
而set集合只是把对象加入集合中,但
set集合不包含重复的元素
。
把数组str={a,sd,er,f,a,sd,sd,a,f,a}中的元素添加到
集合set中就回除掉重复的元素
。
使用楼上的代码就可以。楼上已经写了。大同小异。我就不写了。
HashSet类实际上是HashMap的实例。有哈希表支持,重写了equals()方法。从而保证插入对象的唯一性。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2