JAVA_04 集合框架

集合三大接口:

Collection、map、Iterator


使用自定义类如果有异常,则自定义对象要实现Comparable接口

List 接口   (有序、允许重复、允许空值)

  • ArrayList       大小可变动态数组    线程不安全   插入删除效率低        *3/2+1增长
  • Linkedlist     双向链表  适合频繁插入、删除
  • Vector            可增大缩小 适合多线程访问    线程安全的           *2增长

		//清除所有元素
		list.clear();
		//集合长度
		System.out.println(list.size());
		//是否包含元素
		System.out.println(list.contains(10));
		//查找元素首次出现位置
		System.out.println(list.indexOf(10));
		//集合是否为空
		System.out.println(list.isEmpty());
		//删除指定索引的元素
		System.out.println(list.remove(5));


Set 接口   (不允许重复、最多包含一个null)

  • HashSet                        无序、底层使用HashMap、
  • TreeSet                          自然顺序排序、底层TreeMap实现、存储自定义对象必须实现Comparable/Comparator接口
  • LinkedHashSet            使用哈希表+双向链      插入顺序输出     底层LinkedHashMap实现

Iterator 接口迭代器

	public static void iterator(Collection<String> c){
		Iterator<String> it = c.iterator();
		while(it.hasNext()){
			String s = it.next();
			System.out.println(s);
		}
	}

Map接口

Map<K,V>   键值对

  • HashMap                    key的HashCode顺序  哈希表+链表实现   每次重新排列的方式:元数组长度*2   默认容量:16    线程不安全
  • Hashtable                   不允许null的键值对    默认容量:11     线程安全
  • TreeMap                      使用二叉树中的红黑树实现   以key的自然顺序排列
		Map<String,String> map = new HashMap<String, String>();
		map.put("小白", "白色");
		map.put("小黑", "黑色");
		map.put("小红", "红色");
		
		//通过键得到对应的值
		System.out.println(map.get("小白"));
		//map的数量
		System.out.println(map.size());
		//键里是否含有对应值
		System.out.println(map.containsKey("小红"));
map接口输出方式:
  1. 使用map.keySet()方法吧所有的key独享转换成Set集合,然后迭代set集合取出每个key,再通过key从map中取出value
  2. 使用map.values()方法吧所有的value对象转换成Collection集合,然后进行迭代
  3. 使用map.entrySet()方法吧所有的Entry对象转换成Set集合,然后进行迭代。
		//方式二:
		Collection<String> c = map.values();
		Iterator<String> iter = c.iterator();
		while(iter.hasNext()){
			System.out.println(iter.next());
		}
		//方式三:
		Set<Entry<Integer,String>> entrys = map.entrySet();
		Iterator<Entry<Integer,String>> iter2 = entrys.iterator();
		while(iter2.hasNext()){
			Entry<Integer,String> entry = iter2.next();
			System.out.println(entry.getKey()+"--"+entry.getKey());
		}

hashCode深入分析:

两对象hashCode不相等一定不是同一对象。如果相等也不一定是同一对象
两对象equals相等则是同一对象,不相等则不是同一对象                      关键判断标准

hashCode协定:

同一词运行保持一致

equals相等   hashCode必须相等

Collections工具类








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值