Java LinkedHashSet示例

时间:2020-02-23 14:37:11  来源:igfitidea点击:

Java中的LinkedHashSet类与HashSet不同,因为它的实现在所有元素之间维护一个双链接列表。这个链表定义了迭代顺序,即元素插入集合的顺序。它被称为*插入顺序。*如果元素被重新插入到集合中,插入顺序不受它的影响。有些人更喜欢这种实现方式,因为它可以让用户免于HashSet提供的未指定和混乱的排序。

LinkedHashSet的优势

LinkedHashSet维护元素的插入顺序

插入、删除和检索操作的时间复杂度为O(1)(恒定时间)。

LinkedHashSet允许1个空元素。

LinkedHashSet使用equals()和hashCode(),因此可以删除可能的重复元素。

LinkedHashSet中的构造函数

LinkedHashSet():初始化一个新的链接哈希集,默认初始容量为16,加载因子为0.75.

LinkedHashSet(集合<?extends E>c):使用与指定集合相同的元素初始化新的链接哈希集。

LinkedHashSet(int initialCapacity):使用指定的初始容量初始化新的链接哈希集。

LinkedHashSet(int initialCapacity,float loadFactor):使用指定的容量和加载因子初始化新的链接哈希集。

LinkedHashSet中的方法

从类继承的方法java.util.HashSet:add)、clear)、clone)、contains)、isEmpty)、iterator)、remove)、size)

从类继承的方法java.util.AbstractSet:equals),哈希代码),removeAll)

从类继承的方法java.util.AbstractCollection:addAll)、containsAll)、retainal)、toArray)、toArray)、toString)

从类继承的方法java.lang.Object:finalize)、getClass)、notifyAll)、wait)、wait)、wait)

从接口继承的方法java.util.Set:add)、addAll)、clear)、contains)、containsAll)、equals)、hashCode)、isEmpty)、iterator)、remove)、removeAll)、retainal)、size)、toArray)、toArray)

有关所有方法的文档,可以访问Oracle官方文档页。

使用Iterator()迭代LinkedHashSet

import java.util.*;  
class LinkedHashSetExample{  
   public static void main(String args[]){  
      LinkedHashSet<String> animals=new LinkedHashSet();  
             animals.add("Elephant");    
             animals.add("Tiger");    
             animals.add("Lion");   

             Iterator<String> iterator=animals.iterator();  
             while(iterator.hasNext())  {  
                   System.out.println(iterator.next());  
             }  
    }  
}

输出

Elephant
Tiger
Lion

循环遍历LinkedHashSet

LinkedHashSet<String> linkedHashSet = new LinkedHashSet<String>();
for (int i = 0; i < linkedHashSet.size(); i++) {
  System.out.println(linkedHashSet.get(i));
}

使用Enchanced For Loop遍历LinkedHashSet

for (String temp : linkedHashSet) {
  System.out.println(temp);
}

使用While循环遍历LinkedHashSet

int i = 0;
while (i < linkedHashSet.size()) {
  System.out.println(linkedHashSet.get(i));
  i++;
}

使用LinkedHashSet的示例程序

import java.util.LinkedHashSet;   
public class LinkedHashSetExample  
{   
  public static void main(String[] args)  
  {   
      LinkedHashSet<String> coins =  
                         new LinkedHashSet<String>();   

      //Adding element to LinkedHashSet   
      coins.add("5");   
      coins.add("10");   
      coins.add("20");   
      coins.add("50"); 
      coins.add("100"); 

      //Adding a duplicate would result in no addition of the element  
      coins.add("5");
      //Adding another coin value
      coins.add("75");   

      System.out.println("Size of the list = " + 
                                  coins.size());   
      System.out.println("Original LinkedHashSet:" + coins);   
      System.out.println("Removing 75 from LinkedHashSet: " + 
                          coins.remove("75"));    
      System.out.println("Checking if 50 is present=" +  
                          coins.contains("50")); 
      System.out.println("Updated LinkedHashSet: " + coins);   
  }   
}

输出

Size of LinkedHashSet=5
Original LinkedHashSet:[5, 10, 20, 50, 75, 100]
Removing 75 from LinkedHashSet: true
Checking if 50 is present=true
Updated LinkedHashSet:[5, 10, 20, 50, 100]