java学习--容器(1)
容器(也就是集合collection)
數組相較于集合的缺點
? 長度必須在初始化時指定,且固定不變
? 數組采用連續存儲空間,刪除和添加效率低下
? 數組無法直接保存映射關系
? 數組缺乏封裝,操作繁瑣
位于java的工具包下 (java.util)
看一下家族
特點
? Collection 接口存儲一組不唯一,無序的對象
? List 接口存儲一組不唯一,有序(索引順序)的對象
? Set 接口存儲一組唯一,無序的對象
? Map接口存儲一組鍵值對象,提供key到value的映射
Key 唯一 無序
value 不唯一 無序
它們各自的優缺點
? List
? 特點:有序 不唯一(可重復)
? ArrayList 線性表中的順序表
? 在內存中分配連續的空間,實現了長度可變的數組
? 優點:遍歷元素和隨機訪問元素的效率比較高
? 缺點:添加和刪除需大量移動元素效率低,按照內容查詢效率低,
? LinkedList 線性表中雙向鏈表
? 采用雙向鏈表存儲方式。
? 缺點:遍歷和隨機訪問元素效率低下
?優點:插入、刪除元素效率比較高(但是前提也是必須先低效率查詢才可。如果插入刪除發 生在頭尾可以減少查詢次數)
- List的常用方法
- List相對Collection增加了關于位置操作的方法
- 常用的遍歷方法
- for for-each Iterator迭代器
練習
public class TestGeneric {public static void main(String[] args) {MyClloction<String> mc = new MyClloction<String>();//這里的第二個<String>可以省略mc.set("洛塵曦",0);String b = mc.get(0);System.out.println(b);}}class MyClloction<E>{Object [] objs = new Object[10];public void set(E e,int index) {objs[index] = e;}public E get(int index) {return (E)objs[index];}}輸出
洛塵曦**泛型通常用ETV表示,其實這里的泛型E類似于傳參機制,他就表示返回String類型的數據,如果不用容器的話,在調用方法的時候應該進行強制類型轉換。
不使用泛型,如下面的方式
public class TestGeneric {public static void main(String[] args) {MyClloction mc = new MyClloction();//這里的第二個<String>可以省略mc.set("洛塵曦",0);String b = (String)mc.get(0);System.out.println(b);}}class MyClloction<E>{Object [] objs = new Object[10];public void set(Object e,int index) {objs[index] = obj;}public Object get(int index) {return objs[index];}}Collection的常用方法
public static void main(String[] args) {test();}public static void test() {Collection<String> c = new ArrayList<>();c.size();//判斷容器的大小c.isEmpty();//判斷容器是否為空c.add("洛塵曦");c.add("上官易澤");System.out.println(c.contains("洛塵曦"));//容器中是否包含洛塵曦System.out.println(c);System.out.println(c.size());c.remove("洛塵曦");//會把容器中的洛塵曦移除c.clear();//移除所有}無論是ArrayList 還是LinkedList它們的常用方法其實幾乎一樣
總結
以上是生活随笔為你收集整理的java学习--容器(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mac外接显示器 竖屏 黑苹果_借人气问
- 下一篇: 换位思考:当美团app人气榜的数据不是字