/*
去除排列的重量
遍历1:数组,将元素顺序添加到结果集中。 如果结果集已经存在,则不添加。 o(n*n ) ) )。
如果知道要素范围(如2:字母和数字在固定范围内),可以采用辅助数组。 辅助数组的下标是删除数组的元素,如果辅助数组元素,则删除数组元素的个数。 o(n )。
3:首先对原始数组进行排序,并将其与相邻的进行比较,如果不同则存储在新数组中
利用4:散列集的无序不可迭代特性的元素滤波
5:TreeSet不仅可以实现元素不重叠,还可以实现排序等功能的集合
6:只需创建集合,遍历数组,然后一次放置一个集合。 在部署之前,只需要使用contains ()方法来确定集合中是否已经存在该元素
*/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
class Deduplicate
{
//o(n*n ) ) ) )
公共静态int [ ] de duplicate1(int [ ] array ) )。
{
(if (array==null|| array.length==0) ) ) ) ) ) ) ) )
{
返回空值;
}
arraylistintegeral=newarraylistinteger (;
out:for(intI=0; iarray.length; I )
{
for(intj=0; jal.size (; j )
{
if(array[I]==al.get(j ) )
{
连续输出;
}
}
al.add (阵列[ I ];
}
//integer [ ] array result=(integer [ ] ) al.toarray(newinteger[al.size () ];
int [ ] array result=al.stream (.maptoint (I-I ).toArray );
/*
如果不想使用循环,也想得到int[],就只能在jdk8上使用IntStream
这是Java8的新功能,你在做什么?
1 .首先从Integer数组获取流
2 .打开流程的所有要素;
调用toArray将拆包后的流转换为数组
*/
返回阵列结果;
}
假设//元素范围为0-100,则可以去除重量,也可以重新排列
公共静态int [ ] de duplicate2(int [ ] array ) )。
{
(if (array==null|| array.length==0) ) ) ) ) ) ) ) )
{
返回空值;
}
int[] temp=new int[101];
for(intI=0; iarray.length; I )
{
temp[array[i]];
}
arraylistintegeral=newarraylistinteger (;
for(intI=0; itemp.length; I )
{
if(temp[I]!=0)
{
al.add(I;
}
}
return al.stream ().maptoint(I-I ).toArray );
}
//先排序,接下来相邻的要素变重
公共静态int [ ] de duplicate3(int [ ] array ) )。
{
(if (array==null|| array.length==0) ) ) ) ) ) ) ) )
{
返回空值;
}
Arrays.sort(Array );
arraylistintegeral=newarraylistinteger (;
al.add(Array[0];
for(intI=1; iarray.length; I )
{
IF (阵列[ I ]!=array[i-1] )
{
al.add (阵列[ I ];
}
}
return al.stream ().maptoint(I-I ).toArray );
}
//HashSet加重
公共静态int [ ] de duplicate4(int [ ] array ) )。
{
(if (array==null|| array.length==0) ) ) ) ) ) ) ) )
{
返回空值;
}
setintegerset=newhashsetinteger (;
for(intI=0; iarray.length; I )
{
set.add(Array[I];
}
return set.stream ().maptoint(I-I ).toArray );
}
//HashSet进行排序和排序
公共静态int [ ] de duplicate5(int [ ] array ) )。
{
(if (array==null|| array.length==0) ) ) ) ) ) ) ) )
{
返回空值;
}
setintegerset=newtreesetinteger (;
for(intI=0; iarray.length; I )
{
set.add(Array[I];
}
return set.stream ().maptoint(I-I ).toArray );
}
公共静态int [ ] de duplicate6(int [ ] array ) )。
{
(if (array==null|| array.length==0) ) ) ) ) ) ) ) )
{
返回空值;
}
arraylistintegeral=newarraylistinteger (;
for(intI=0; iarray.length; I )
{
if (! al.contains(Array[I] ) )
{
al.add (阵列[ I ];
}
}
return al.stream ().maptoint(I-I ).toArray );
}
publicstaticvoidmain (字符串[ ] args ) )。
{
int [ ] array={ 1,4,3,2,5,3,6,100,2 };
system.out.println (arrays.tostring ) deduplicate6(Array );
}
}