java數組刪除重複元素專題及常見問題 - CSDN

2021-01-11 CSDN技術社區

package com.akfucc.zhidao;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.List;public class P124876743 { public static void main(String[] args) {  int[] nums = { 1, 2, 3, 3, 3, 3, 4 };  List<Integer> numList = new ArrayList<Integer>();  for (int i : nums)   numList.add(i);  System.out.println(numList);  // 做刪除  Iterator<Integer> it = numList.iterator();  int temp = -1;  if (it.hasNext())   temp = it.next();  while (it.hasNext()) {   int i = it.next();   if (i == temp) {    it.remove();   } else {    temp = i;   }  }  System.out.println(numList); }}

----

把數組中的元素取出放入一個HashSet中,這樣就可以過濾重複的值了。 

用hashset 重複的自動去掉了HashSet hashset=new HashSet();hashset。add(1);都加進去Iterator iterator=hashset。itertaor();做一個while循環 輸出就ok了 

----

如果你要得到的數組可以無序的話將原數組裡的元素放到HashSet中就行了,如果你想得到的數組還要之前的順序的話,就只能一個個比了,從頭開始遍歷,看每個元素跟它前面的元素有沒有重複有則刪掉。 

---

Integer str[] = {1,2,3,3,3,4};  Set <Integer>set=new TreeSet<Integer>(Arrays.asList(str));  Integer[] newArray=set.toArray(new Integer[set.size()]) ;  for(Integer i:newArray){   System.out.println(i);  }  //System.out.println(set); 

----

private static  int [ ]  supRep( int [ ]  x) {    int[] tempArray = new int[x.length];    boolean repeated = false;    int nbNonRep=0;    //Verify for each element    for (int i=0; i<x.length; i++){        for (int j=i+1; j<x.length; j++){            if (x[i]==x[j]){// x[i] is repeated                repeated = true;                break;            }        }        if (repeated == false){// a non repeated number            tempArray[nbNonRep++]=x[i];        }        repeated = false;    }    int[] resultArray = new int[nbNonRep];    System.arraycopy(tempArray, 0, resultArray, 0, nbNonRep);  return(resultArray); }    public static void main(String[] args) {          int [ ] arr = new int[]{2,5,6,6,8,12,3,5};          int [] a = supRep(arr);          for (int i = 0; i<a.length; i++){              System.out.print(a[i]+ " ");          }    } ---測試結果:run:2 6 8 12 3 5 成功生成(總時間:0 秒) ---當然,我是用兩個兩個數比較的,如果數據量非常大,比如幾萬幾十萬或者更多數字,最好做一個Tree,這樣瀏覽一遍你的Array就OK了 ---如果想要簡單,用ArrayList就可以了:          ArrayList myList = new ArrayList();          for (int i=0; i<arr.length; i++){              if (!myList.contains(arr[i])) myList.add(arr[i]);          }          for (int i = 0; i<myList.size();i++){              System.out.print(myList.get(i) + ", ");          }不過程序效率肯定是不高的 ArrayList:底層用數組實現的List 。特點:查詢效率高,增刪效率低 輕量級 線程不安全。HashSet:採用哈希算法來實現Set接口, 唯一性保證:重複對象equals方法返回為true ,重複對象hashCode方法返回相同的整數不同對象 哈希碼 儘量保證不同(提高效率)。TreeMap:集合是指一個對象可以容納了多個對象(不是引用),這個集合對象主要用來管理維護一系列相似的對象。 



相關焦點

  • LeetCode數組類知識點&題型總結
    由於數組在存儲時是順序存儲的,存儲數據的內存也是連續的,所以數組在讀取數據時比較容易,隨機訪問速度快,但是插入和刪除就比較費勁了。讀取可以直接根據索引,插入和刪除則比較耗時,插一個數據需要移動大量元素,在內存中空出一個元素的空間,然後將要增加的元素放在其中,如果想刪除一個元素,同樣需要移動大量元素去掉被移動的元素。所以如果需求是快速訪問數據,很少或者幾乎不插入和刪除元素,數組是一個不錯的選擇。
  • 數據結構java面試題及答案
    數組是最常用的基礎數據結構,它將元素保存在連續的內存中。它也是面試最喜歡的問題之一,在代碼面試中你會經常聽到很多關於數組的問題,例如,數組的反轉、數組的排序或者查找數組中的一個元素。數組結構的一個關鍵優點是在知道索引的情況能夠以O(1)的複雜度找到一個元素。但是增加或者刪除一個元素是很慢的,因為一旦創建了一個數組,你就不能改變它的大小了。
  • EXCEL中數組的應用專題之三:如何對數組公式進行編輯和刪除
    在上一講數組的應用專題之二中,我講過數組公式的特徵之一就是不能單獨編輯、清除或移動數組公式所涉及的單元格區域中的某一個單元格。這個特徵也是數組的重要應用之一。這裡我們再來回顧一下什麼是數組,什麼是數組公式.
  • java之數組作為方法參數的使用
    各位小夥伴們大家好,這次小編要介紹的是java作為方法參數,返回值的使用。首先,小編要介紹的是java作為方法參數的使用。,才可以列印其中的元素。int[] array*/public static void printArray(int[] array){System.out.println(array);//printArray方法收到的參數:地址值for(int i=0;i<array.length;i++){//數組的遍歷System.out.println(array[i]);}}}在數組作為方法參數使用的時候,
  • java基礎教程:Collection集合,Collection 常用API
    集合:集合是java中提供的一種容器,可以用來存儲多個數據。集合和數組既然都是容器,它們有什麼區別呢?數組的長度是固定的。集合的長度是可變的。數組中存儲的是同一類型的元素,可以存儲任意類型數據。集合存儲的都是引用數據類型。如果想存儲基本類型數據需要存儲對應的包裝類型。
  • 超實用的Java數組技巧攻略
    本文分享了關於Java數組最頂級的11大方法,幫助你解決工作流程問題,無論是運用在團隊環境或是在私人項目中,你都可以直接拿來用! 0.  將數組元素加入到一個獨立的字符串中(Joins the elements of the provided array into a single String)// containing the provided list of elements// Apache common langString j = StringUtils.join(new String[]
  • 一起學JAVA——數組和函數
    之前我們介紹了java的數據類型、變量、流程控制等內容。今天我們高級數據類型——數組以及函數的作用。函數(方法)函數的定義函數就是一段有名字的代碼,可以完成某一特定功能。其中所有元素都為默認值0。數組的長度:arr.length訪問數組元素、遍歷數組存在數組中的數據是有索引的,從0開始遞增,我們通過數組名和索引就可以操作其中每一個元素。例如:System.
  • python的int類型專題及常見問題 - CSDN
    在以前的Python2中,整型分為int和long,也就是整型和長整型, 長整型不存在溢出問題, 即可以存放任意大小的數值,理論支持無限大數字。因此在Python3 中,統一使用長整型,用int表示,在Python3中不存在long,只有int。
  • Java基礎篇——數組詳解
    項目開發中,如果需要存儲大量的數據,例如如果需要讀取100個數,那麼就需要定義100個變量,顯然重複寫100次代碼,是沒有太大意義的。Java語言提供了數組(array)的數據結構,可以解決這個問題。數組的概念一個數組是相同數據類型的元素按一定順序排列的集合。
  • 提升java編程性能優化知識 程式設計師必看這幾點
    22.儘量避免非常大的內存分配  有時候問題不是由當時的堆狀態造成的,而是因為分配失敗造成的。分配的內存塊都必須是連續的,而隨著堆越來越滿,找到較大的連續塊越來越困難。  25.不要重複初始化變量  默認情況下,調用類的構造函數時,java會把變量初始化成確定的值,所有的對象被設置成null,整數變量設置成0,float和double變量設置成0.0,邏輯值設置成false。當一個類從另一個類派生時,這一點尤其應該注意,因為用new關鍵字創建一個對象時,構造函數鏈中的所有構造函數都會被自動調用。
  • a標籤 href vue專題及常見問題 - CSDN
    #issuecomment-31.標籤 {{el.tourism_name}} {{el.tog_line_id}} {{el.addre設置vm堆大小以及,配置遠程監控參數 設置遠程埠為8999,不需要用戶名密碼驗證,初始化堆內存為64M.最大堆內存為128M.新生代為20M,Survivor區與Eden區內存為2:8 java
  • android啟動頁設計專題及常見問題 - CSDN
    轉載請註明出處:http://blog.csdn.net/wangjihuanghun/article/details/63255144啟動頁幾乎成為了每個app的標配,有些商家在啟動頁中增加了開屏廣告以此帶來更多的收入。
  • JAVA校招題基礎知識點複習第六天(一張圖搞懂所有集合特點)
    集合其實和數組一樣都是java中提供的一種容器,可以用來存儲多個數據。既然集合和數組都容器,那麼他們有什麼區別呢?1、數組的長度是固定的,集合的長度是可變的。2、數組中存儲的是同一類型的元素,可以存儲基本數據類型值。3、集合存儲的都是對象。而且對象的類型可以不一致。在開發中一般當對象多的時候,使用集合進行存儲。了解完集合與數組的區別,讓我們來看看在JAVA中都為我們提供了哪些集合?
  • NumPy ndarray數組元素的獲取
    生成 ndarray 數組後,如何讀取我們所需要的數據呢?
  • 2020年Java基礎高頻面試題匯總
    一旦java看到null,就知道這個引用還沒有指向某個對象,2.基本數據類型在聲明時系統會自動給它分配空間,而引用類型聲明時只是分配了引用空間,必須通過實例化開闢數據空間之後才可以賦值。數組對象也是一個引用對象,將一個數組賦值給另一個數組時只是複製了一個引用,所以通過某一個數組所做的修改在另一個數組中也看的見。
  • 在VBA中如何使用動態數組,以及利用動態數組去除重複值的方法
    大家好,我們今日繼續講解VBA數組與字典解決方案第22講:在VBA中如何使用動態數組,以及利用動態數組去除重複值的方法。如果文本中含有大量的重複值,此時,如果我們要剔除重複值,該怎麼辦?用VBA的方法該如何做到呢?我在這講和下一講中將解答這個問題,並提供給讀者一個可以測試的實例。今日先講這個內容要用到的知識點。
  • 一日一技:從Python列表中刪除重複值
    從Python列表中刪除重複項列表是一個包含不同Python對象的容器,該對象可以是整數,字符串,布爾值等。它等同於其他程式語言中的數組。因此,在這裡我們將通過不同的方式來從列表中刪除重複值。在這節中,我們將學習:使用Set()方法 從列表中刪除重複項使用臨時列表從列表中刪除重複項。
  • Arrays.sort() 為什麼可以對 int 等數組進行排序?我跟面試官扯了...
    作者 | TrueDei責編 | 王曉曼出品 | CSDN博客前言排序是在程序開發中最常用到的,最常見的就是針對一些數字進行排序。而現實中像商品的名字,訂單的日期等進行排序。Java的JDK中就自帶了Comparable接口,那麼來看下這個,如何與面試官對答如流。
  • (提高Java代碼質量)|25個優化Java代碼的小技巧
    應該使用 Collection.isEmpty() 檢測空使用 Collection.size() 來檢測空邏輯上沒有問題,但是使用 Collection.isEmpty() 使得代碼更易讀,並且可以獲得更好的性能。