JAVA里面可以利用Set Map的唯一性來排除重復(fù)數(shù)值,具體代碼如下:
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供龍口企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、HTML5建站、小程序制作等業(yè)務(wù)。10年已為龍口眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
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集合的唯一性來做到去除重復(fù)
SetInteger set = new TreeSetInteger();
//利用map的KEY的唯一性來去除重復(fù)
MapInteger, Object map = new HashMapInteger, Object();
//利用集合特性去除重復(fù)值
for(int i = 0; i ary.length; i++){
set.add(new Integer(i));
map.put(new Integer(i), null);
}
System.out.println("利用Set去除結(jié)果:");
for (Iterator iterator = set.iterator(); iterator.hasNext();) {
Integer integer = (Integer) iterator.next();
System.out.print(integer + " ");
}
System.out.println("\n利用Map去除結(jié)果:");
for(Iterator ite = map.keySet().iterator(); ite.hasNext();){
System.out.print(ite.next() + " ");
}
}
}
---------------程序結(jié)果
利用Set去除結(jié)果:
0 1 2 3 4 5 6 7
利用Map去除結(jié)果:
0 1 2 3 4 5 6 7
Java8開始,對(duì)數(shù)值,集合等提供了Stream流操作,可以方便的對(duì)集合進(jìn)行操作.
比如 篩選,過濾,去重, 映射, 排序,規(guī)約,收集 等操作
簡單的參考代碼如下
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)?{
//?需求:?集合去重,排序,得到一個(gè)新集合里面的元素是之前元素的平方
ListInteger?list=Arrays.asList(5,2,2,1,3,4);
ListInteger?listResult?= list
.stream()?//?得到流
.distinct()?//?去重?5,2,1,3,4
.sorted()?//?自然排序?,?也可以自定義排序規(guī)則1,2,3,4,5
.map(x-x*x)?//?每個(gè)元素求平方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("測(cè)試1");
list.add("測(cè)試2");
list.add("測(cè)試3");
list.add("測(cè)試4");
list.add("測(cè)試4");
list.add("測(cè)試2");
list.add("測(cè)試5");
System.out.println("沒有去重前的數(shù)據(jù)為"+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("去重后的數(shù)據(jù)為"+list.toString());
}
}
希望能幫到你!
你要去除的值是基本數(shù)據(jù)類型還是對(duì)象呢?
如果不想存重復(fù)數(shù)據(jù)何不用Set呢。。。
其實(shí)吧。。在知道上提問不如在網(wǎng)頁上查。。這個(gè)是我查到的第一個(gè)。。網(wǎng)頁里的內(nèi)容,他一共使用了3種方式
最近項(xiàng)目中需要對(duì)list集合中的重復(fù)值進(jìn)行處理,大部分是采用兩種方法,一種是用遍歷list集合判斷后賦給另一個(gè)list集合,一種是用賦給set集合再返回給list集合。
但是賦給set集合后,由于set集合是無序的,原先的順序就打亂了。所以我又想著能不能用set的特性進(jìn)行去重又不打亂順序呢?
試了一下,也是可以的,幾種方法在不同情況下都有各自的優(yōu)勢(shì)。現(xiàn)在將代碼寫出來,比較一下。
//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
//遍歷后判斷賦給另一個(gè)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不進(jìn)行排序,還有一種方法是用treeset,去重并且按照自然順序排列,將hashset改為treeset就可以了。(原本的順序是改變的,只是按照字母表順序排列而已)
//去重并且按照自然順序排列
List newList = new ArrayList(new TreeSet(list));
java數(shù)組中去掉重復(fù)數(shù)據(jù)可以使用set集合,set本身內(nèi)部是不保存重復(fù)的數(shù)據(jù)的,如下代碼:
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?};//新建一個(gè)int類型數(shù)組????????System.out.println(Arrays.toString(testArr));????????SetInteger?set?=?new?TreeSetInteger();//新建一個(gè)set集合????????for?(int?i?:?testArr)?{????????????set.add(i);????????}????????Integer[]?arr2?=?set.toArray(new?Integer[0]);????????//?數(shù)組的包裝類型不能轉(zhuǎn)?只能自己轉(zhuǎn);吧Integer轉(zhuǎn)為為int數(shù)組;????????int[]?result?=?new?int[arr2.length];????????for?(int?i?=?0;?i??result.length;?i++)?{????????????result[i]?=?arr2[i];????????}????????System.out.println(Arrays.toString(arr2));????}}
運(yùn)行結(jié)果如下:
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代碼??梢岳胹et 的元素的唯一性來完成你的要求。
set.add() 方法 如果添加失敗那么會(huì)返回false,也就意味著里面已經(jīng)有了一個(gè)同樣的元素。
當(dāng)然這個(gè)方法未必是最好的??梢岳靡恍└擅畹姆椒ㄟ_(dá)成。那樣速度和效率都會(huì)更高。
(有部分人不知道為什么我的代碼new?HashSet里面沒有指定類型。那么請(qǐng)參考java1.7新特性)
當(dāng)前標(biāo)題:java集合去重代碼 字符串去重 java
轉(zhuǎn)載注明:http://m.rwnh.cn/article28/doopejp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站建設(shè)、商城網(wǎng)站、電子商務(wù)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)頁設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)