首先:Collection是List集合和Set集合的父类,同时,它们三个都为接口,不能直接实例化,所以需要,List和set的子类来实例化。
List的子类:
ArrayList类和LinkedList
1、ArrayList类:底层采用的是数组结构
LinkedList类:底层采用的是链式结构,每次查询都是从头或者从尾开始,查询速度相对较慢
特有方法:removeFirst removeLast
Set的子类:
HashSet类和LinkedHashSet
1)Set接口概述
一个不包含重复元素的 collection,无序(存储顺序和取出顺序不一致),唯一。 (List有序,即存储顺序和取出顺序一致,可重复)
2)Set案例
存储字符串并遍历
存储自定义对象并遍历
2、HashSet
1)HashSet类概述
不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。
2)HashSet如何保证元素唯一性
底层数据结构是哈希表(元素是链表的数组)
哈希表依赖于哈希值存储
添加功能底层依赖两个方法:
· int hashCode()
· boolean equals(Object obj)
代码实例:
1 package com.aaa.demo2; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 public class HashSetDemo { 7 public static void main(String[] args){ 8 Set<String> set=new HashSet<String>(); 9 set.add("hello"); 10 set.add("java"); 11 set.add("hello"); 12 //for增强 13 for (String s:set){ 14 System.out.println(s); 15 } 16 } 17 }
输出结果(不存储重复的):
hello
java