LinkedList,HashSet,LinkedHashSet


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);
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM