zoukankan      html  css  js  c++  java
  • 【Java】Collection与Map接口总结

    Collection
        -----List
                   -----LinkedList    非同步
                    ----ArrayList      非同步,实现了可变大小的元素数组
                    ----Vector          同步 线程安全
                              ------Stack
        -----Set   不允许有相同的元素
    Map
        -----Hashtable        同步,实现一个key--value映射的哈希表
        -----HashMap          非同步,
        -----WeakHashMap   改进的HashMap,实现了“弱引用”,如果一个key不被引用,则被GC回收

    子接口  

    Set,List  

    集合中只能放置对象的引用,不能放置原生数据类型,  

    我们需要使用原生数据类型的封装类才能加入到集合中

    List常用方法:

    package com.itlwc;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Test {
    	public static void main(String[] args) {
    		List list = new ArrayList();
    		// 向列表的尾部追加指定的元素
    		list.add("lwc");
    		// 在列表的指定位置插入指定元素
    		list.add(1, "nxj");
    		// 追加指定 collection 中的所有元素到此列表的结尾
    		list.addAll(new ArrayList());
    		// 从列表中移除所有元素
    		list.clear();
    		// 如果列表包含指定的元素,则返回true
    		list.contains("nxj");
    		// 如果列表包含指定 collection 的所有元素,则返回 true
    		list.containsAll(new ArrayList());
    		// 比较指定的对象与列表是否相等
    		list.equals(new ArrayList());
    		// 返回列表中指定位置的元素
    		list.get(0);
    		// 返回列表的哈希码值
    		list.hashCode();
    		// 返回列表中首次出现指定元素的索引,如果列表不包含此元素,则返回 -1
    		list.indexOf("lwc");
    		// 返回列表中最后出现指定元素的索引,如果列表不包含此元素,则返回 -1
    		list.lastIndexOf("lwc");
    		// 如果列表不包含元素,则返回 true
    		list.isEmpty();
    		// 移除列表中指定位置的元素
    		list.remove(0);
    		// 移除列表中出现的首个指定元素
    		list.remove("lwc");
    		// 从列表中移除指定 collection 中包含的所有元素
    		list.removeAll(new ArrayList());
    		// 用指定元素替换列表中指定位置的元素
    		list.set(0, "lp");
    		// 返回列表中的元素数
    		list.size();
    		// 返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分视图
    		list.subList(1, 2);
    		// 返回以正确顺序包含列表中的所有元素的数组
    		list.toArray();
    		// 返回以正确顺序包含列表中所有元素的数组
    		list.toArray(new String[] { "a", "b" });
    	}
    }
    

     

    ArrayList

    构造方法
    public ArrayList()
    public ArrayList(int initialCapacity)
    public ArrayList(Collection c)
    ArrayList依赖于数组实现的,初始长度为10的Object[],并且可随需要而增加的动态数组
    当元素超过10,那么ArrayList底层会新生成一个数组,长度为原来的1.5倍+1,
    然后将原数组内容复制到新数组中,并且后续增加的内容会放到新数组中,
    当新数组无法容纳增加的元素,重复该过程
    ArrayList对随机访问性能很好,但进行大量插入,删除操作,性能很差,
    因为操作之后后续元素需要移动

    遍历ArrayList

    package com.itlwc;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class Test {
    	public static void main(String[] args) {
    		List<String> list = new ArrayList<String>();
    		list.add("lwc");
    		list.add("nxj");
    		// 方法一
    		Iterator<String> ite1 = list.iterator();
    		while (ite1.hasNext()) {
    			String str = ite1.next();
    			System.out.println(str);
    		}
    		System.out.println("---------------------");
    		// 方法二(方法一的变形)
    		for (Iterator<String> ite2 = list.iterator(); ite2.hasNext();) {
    			String str = ite2.next();
    			System.out.println(str);
    		}
    		System.out.println("---------------------");
    		// 方法三
    		for(String s : list){
    			System.out.println(s);
    		}
    	}
    }
    /*
    打印结果:
    	lwc
    	nxj
    	---------------------
    	lwc
    	nxj
    	---------------------
    	lwc
    	nxj
    */
    

      

    遍历LinkedList

    package com.itlwc;
    
    import java.util.LinkedList;
    import java.util.List;
    import java.util.ListIterator;
    
    public class Test {
    	public static void main(String[] args) {
    		List link = new LinkedList();
    		link.add(123);
    		link.add("lwc");
    		link.add(8.8);
    		link.add("nxj");
    		link.add(520);
    		printList(link);
    		printReversedList(link);
    	}
    
    	private static void printList(List link) {
    		System.out.println("正序链表中的元素");
    		// 的到链表的迭代器,位置指向链头
    		ListIterator li = link.listIterator();
    		// 判断迭代器中是否有下一个元素
    		while (li.hasNext()) {
    			// 返回下个元素
    			System.out.print(li.next() + " ");
    		}
    		System.out.println();
    	}
    
    	private static void printReversedList(List link) {
    		System.out.println("逆向链表中的元素");
    		// 的到链表的迭代器,位置指向link.size()结尾
    		ListIterator li = link.listIterator(link.size());
    		// 判断迭代器中是否有前一个元素
    		while (li.hasPrevious()) {
    			// 返回前一个元素
    			System.out.print(li.previous() + " ");
    		}
    		System.out.println();
    	}
    }
    /*
    打印结果:
    	正序链表中的元素
    	123 lwc 8.8 nxj 520 
    	逆向链表中的元素
    	520 nxj 8.8 lwc 123 
    */
    

      

  • 相关阅读:
    OO第三单元总结
    oo第二单元总结
    oo第一单元总结
    OO助教工作总结
    当QSY遇上XL尺码的小黄衫
    终点亦是起点
    敏捷开发规范化
    Beta阶段性总结
    需求存在,功能存在——Alpha阶段性总结
    Gitlab Burndown Chart
  • 原文地址:https://www.cnblogs.com/zeze/p/6530674.html
Copyright © 2011-2022 走看看