重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
JAVA里面可以利用Set Map的唯一性来排除重复数值,具体代码如下:
成都创新互联公司是一家专业提供龙口企业网站建设,专注与成都网站设计、网站制作、HTML5建站、小程序制作等业务。10年已为龙口众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class Test {
public static void main(String[] args) {
int[] ary = {2,5,4,7,8,9,6,4};
//通过Set集合的唯一性来做到去除重复
SetInteger set = new TreeSetInteger();
//利用map的KEY的唯一性来去除重复
MapInteger, Object map = new HashMapInteger, Object();
//利用集合特性去除重复值
for(int i = 0; i ary.length; i++){
set.add(new Integer(i));
map.put(new Integer(i), null);
}
System.out.println("利用Set去除结果:");
for (Iterator iterator = set.iterator(); iterator.hasNext();) {
Integer integer = (Integer) iterator.next();
System.out.print(integer + " ");
}
System.out.println("\n利用Map去除结果:");
for(Iterator ite = map.keySet().iterator(); ite.hasNext();){
System.out.print(ite.next() + " ");
}
}
}
---------------程序结果
利用Set去除结果:
0 1 2 3 4 5 6 7
利用Map去除结果:
0 1 2 3 4 5 6 7
Java8开始,对数值,集合等提供了Stream流操作,可以方便的对集合进行操作.
比如 筛选,过滤,去重, 映射, 排序,规约,收集 等操作
简单的参考代码如下
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
// 使用Java8 的Stream特性 和 Java8的Lambda 语句
public class Demo {
public static void main(String[] args) {
// 需求: 集合去重,排序,得到一个新集合里面的元素是之前元素的平方
ListInteger list=Arrays.asList(5,2,2,1,3,4);
ListInteger listResult = list
.stream() // 得到流
.distinct() // 去重 5,2,1,3,4
.sorted() // 自然排序 , 也可以自定义排序规则1,2,3,4,5
.map(x-x*x) // 每个元素求平方1,4,9,16,25
.collect(Collectors.toList()); //收集并返回
System.out.println(listResult);//1,4,9,16,25
}
}
public class Test {
public static void main(String[] args) {
ListString list = new ArrayListString();
list.add("测试1");
list.add("测试2");
list.add("测试3");
list.add("测试4");
list.add("测试4");
list.add("测试2");
list.add("测试5");
System.out.println("没有去重前的数据为"+list.toString());
for(int i = 0;ilist.size()-1;i++){
for(int j = list.size()-1;ji;j--) {
if(list.get(j).equals(list.get(i))){
list.remove(j);
}
}
}
System.out.println("去重后的数据为"+list.toString());
}
}
希望能帮到你!
你要去除的值是基本数据类型还是对象呢?
如果不想存重复数据何不用Set呢。。。
其实吧。。在知道上提问不如在网页上查。。这个是我查到的第一个。。网页里的内容,他一共使用了3种方式
最近项目中需要对list集合中的重复值进行处理,大部分是采用两种方法,一种是用遍历list集合判断后赋给另一个list集合,一种是用赋给set集合再返回给list集合。
但是赋给set集合后,由于set集合是无序的,原先的顺序就打乱了。所以我又想着能不能用set的特性进行去重又不打乱顺序呢?
试了一下,也是可以的,几种方法在不同情况下都有各自的优势。现在将代码写出来,比较一下。
//set集合去重,不打乱顺序
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
Set set = new HashSet();
List newList = new ArrayList();
for (String cd:list) {
if(set.add(cd)){
newList.add(cd);
}
}
System.out.println( "去重后的集合: " + newList);
}123456789101112131415161718
//遍历后判断赋给另一个list集合
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
ListString newList = new ArrayListString();
for (String cd:list) {
if(!newList.contains(cd)){
newList.add(cd);
}
}
System.out.println( "去重后的集合: " + newList);
}1234567891011121314151617
//set去重
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
Set set = new HashSet();
List newList = new ArrayList();
set.addAll(list);
newList.addAll(set);
System.out.println( "去重后的集合: " + newList);
}12345678910111213141516
//set去重(缩减为一行)
public static void main(String[] args){
ListString list = new ArrayListString();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
List newList = new ArrayList(new HashSet(list));
System.out.println( "去重后的集合: " + newList);
}12345678910111213
hashset不进行排序,还有一种方法是用treeset,去重并且按照自然顺序排列,将hashset改为treeset就可以了。(原本的顺序是改变的,只是按照字母表顺序排列而已)
//去重并且按照自然顺序排列
List newList = new ArrayList(new TreeSet(list));
java数组中去掉重复数据可以使用set集合,set本身内部是不保存重复的数据的,如下代码:
import java.util.Arrays;import java.util.Set;import java.util.TreeSet; public class ceshi { public static void main(String[] args) { int[] testArr = { 5, 5, 1, 2, 3, 6, -7, 8, 6, 45, 5 };//新建一个int类型数组 System.out.println(Arrays.toString(testArr)); SetInteger set = new TreeSetInteger();//新建一个set集合 for (int i : testArr) { set.add(i); } Integer[] arr2 = set.toArray(new Integer[0]); // 数组的包装类型不能转 只能自己转;吧Integer转为为int数组; int[] result = new int[arr2.length]; for (int i = 0; i result.length; i++) { result[i] = arr2[i]; } System.out.println(Arrays.toString(arr2)); }}
运行结果如下:
public class RemoveDuplicate {
private static int[] array = {1,2,3,3,3,4,5,6,6,7};
public static void remove(){
SetInteger set = new HashSet();
for (int i : array) {
if(!set.add(i)){
System.out.println(i);
}
}
System.out.println(set.toString());
}
public static void main(String[] args) {
RemoveDuplicate.remove();
}
}
以上是java代码。可以利用set 的元素的唯一性来完成你的要求。
set.add() 方法 如果添加失败那么会返回false,也就意味着里面已经有了一个同样的元素。
当然这个方法未必是最好的。可以利用一些更巧妙的方法达成。那样速度和效率都会更高。
(有部分人不知道为什么我的代码new HashSet里面没有指定类型。那么请参考java1.7新特性)