1 LinkedList集合
ArrayList集合數據存儲的結構是數組結構。元素增刪慢,查找快。
LinkedList集合數據存儲的結構是鏈表結構。方便元素添加、刪除的集合。
方法:
public class Demo01 { public static void main(String[] args) { LinkedList<String>list=new LinkedList<String>(); list.addLast("a"); list.addFirst("b"); list.addFirst("c"); list.addLast("e"); //清空集合 list.clear(); //if(list.size()!=0) 判空 if(!list.isEmpty()){ //獲取集合中第一個元素 System.out.println(list.getFirst()); //獲取集合中最后一個元素 System.out.println(list.getLast()); } //刪除第一個元素 list.removeFirst(); list.removeLast(); } }
2 HashSet集合
1.HashSet集合,采用哈希表結構存儲數據,保證元素唯一性的方式依賴於:hashCode()與equals()方法。
當向哈希表中存放元素時,需要根據元素的特有數據結合相應的算法,這個算法其實就是Object類中的hashCode方法。由於任何對象都是Object類的子類,所以任何對象有擁有這個方法。即就是在給哈希表中存放對象時,會調用對象的hashCode方法,算出對象在表中的存放位置,這里需要注意,如果兩個對象hashCode方法算出結果一樣,這樣現象稱為哈希沖突,這時會調用對象的equals方法,比較這兩個對象是不是同一個對象,如果equals方法返回的是true,那么就不會把第二個對象存放在哈希表中,如果返回的是false,就會把這個值存放在哈希表中。
public class Demo02 { public static void main(String[] args) { /*Person p1=new Person(); Person p2=new Person(); System.out.println(p1.hashCode()); System.out.println(p2.hashCode());*/ String s1=new String("abc"); String s2=new String("abc"); System.out.println(s1.hashCode()); System.out.println(s2.hashCode()); HashSet<String> set=new HashSet<String>(); set.add("abc"); set.add("bcd"); for(String s:set){ System.out.println(s); } } }
2.HashSet存儲和取出元素
public class Demo03 { public static void main(String[] args) { Person p1=new Person("a",18); Person p2=new Person("b",19); Person p3=new Person("c",16); Person p4=new Person("a",18); HashSet<Person>set=new HashSet<Person>(); set.add(p1); set.add(p2); set.add(p3); set.add(p4); for(Person p:set){ System.out.println(p); } Iterator<Person> p=set.iterator(); while(p.hasNext()){ System.out.println(p.next()); } } }
3 LinkedHashSet集合
HashSet下面有一個子類LinkedHashSet,它是鏈表和哈希表組合的一個數據存儲結構。
public class Demo04 { public static void main(String[] args) { LinkedHashSet<String>set=new LinkedHashSet<String>(); set.add("hello"); set.add("java"); set.add("nihao"); for(String s:set){ System.out.println(s); } } }