自定义队列(优化了数组固定长度的弊端)以及集合中的一些重点内容
生活随笔
收集整理的這篇文章主要介紹了
自定义队列(优化了数组固定长度的弊端)以及集合中的一些重点内容
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
java中的數組在聲明的的時候都會要求輸入數組的的大小,有的時候在事先會不知道要加入的東西的大小,那我們怎么定義數組的大小呢,定多大合適呢,這就成為一個難題。其實Java中的集合會解決這個問題,但它是怎么解決的呢?
下面我將要說的自定義隊列,跟java中的ArrayList的實現差不多,它能夠優化數組定義時固定長度的不足。
自定義隊列將要實現的基本功能:
1.添加對象?
2.獲取指定位置對象
3.遍歷整個隊列
4.刪除指定位置的對象
5.修改指定位置的對象
6.獲取隊列的大小
思想:簡單地說就是創建兩個數組,第二個數組的長度比第一個數的長度大1,把第一個數組中的對象賦給第二個數組,然后在第二個數組的最后加入新添加的對象,然后再把第二個數組賦給第一個數組,這就能夠讓你想加多少對象到數組里邊都行了,數組的大小會根據你加入對象的多少來改變。
代碼:
public class UserList {private User[] src_users = new User[0];//原始用戶數組對象//在末尾添加一個用戶對象public void addLast(User user){//新數組,長度比src_users大1User[] dest_users = new User[src_users.length+1];//拷貝元素for(int i=0;i集合中的一些重點內容: java中的集合類:(基本功能:增添,刪除,修改,查詢,顯示(遍歷)) 1.List: ? ?ArrayList,LinkedList,Vector,stack(棧) 2.Map: ? ?HashMap,Hashtable,TreeMap 3.Set: ? HashSet,TreeSet 4.Queue: ? Queue接口
List特點:有序的,可重復的 Set特點:無序的,不可重復的
ArrayList:幾個基本方法:size()大小,add()增添,remove()刪除,get()查詢 LinkedList:與ArrayList的相比幾個特有的方法:addFirst()從前面添加,addLast()從后邊添加 Vector:與ArrayList差不多,只不過Vector是同步的,ArrayList是異步的 Stack:add()添加的時候是往前添加的 HashMap:是以“鍵--值”對的形式存儲的,它不允許鍵的值相同(如果鍵的值相同,后添加的值會覆蓋前邊的值),鍵的值是唯一的,不過HashMap有一個不足之處:HashMap的遍歷是沒有順序的(并不是你先存進去就先取出來),HashMap的遍歷要用到Iterator(迭代器)。
HashMap與Hashtable的區別: 1.同步性: HashMap是同步的,這個類中的一些方法保證了Hashtable中的對象是線程安全的,但是同步的要求會影響到執行的效率。簡單地說,如果有多個線程同時訪問修改Hashtable,Hashtable會讓后進的線程排隊等待,前面的訪問完成后,后面的才能去訪問,但同時訪問HashMap的話,HashMap沒有這種安全機制,就會使HashMap中的數據產生臟數據。 2.值: HashMap可以讓你將空值作為一個表的條目的Key或Value,但是Hashtable是不能放入空值的。
ArrayList與Vector的區別: 同步性: Vector是同步的,ArrayList是異步的。 數據增長: Vector缺省情況下自動增長原來的一倍的數組長度,ArrayList是原來的50%
總結: 1.線程安全:Vector,Hashtable 2.不要求線程安全:ArrayList,LinkedList,HashMap 3.鍵值對:HashMap,Hashtable 4.數據量很大、線程安全:Vector
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的自定义队列(优化了数组固定长度的弊端)以及集合中的一些重点内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两种简单的查找方法
- 下一篇: 命令提示符中的几个重要的命令