[置顶] Set接口类:HashSet、LinkedHashSet、TreeSet

1、散列集HashSet

        HashSet类存储的的元素是互相不同的,即使添加了同一个元素,只会保留一个。添加到散列集中的对象必须以一种正确分散散列码的方式来实现hashCode方法。Java API中的大多数类都实现了hashCode方法。

下面是测试CODE:

package set;

import java.util.*;

public class TestHashSet {

	/**
	 * 创建一个散列集存储字符串,实现部分方法
	 * @author Sun1956
	 */
	public static void main(String[] args) {
		//创建一个HashSet
		Set<String> set1 = new HashSet<String>();
		//添加字符串到set1中
		set1.add("London");
		set1.add("Paris");
		set1.add("New York");
		set1.add("San Francisco");
		set1.add("BeiJing");
		
		//使用迭代器遍历set1
		Iterator<String> iterator = set1.iterator();
		System.out.println("Display the elements in set1:");
		while(iterator.hasNext()) {
			System.out.printf(iterator.next() + " ");
		}
			
		System.out.println("\nset1 is " + set1);
		System.out.println(set1.size() + " elements in set1");
		
		//remove方法:删除一个字符串
		set1.remove("London");
		System.out.println("\nset1 is " + set1);
		System.out.println(set1.size() + " elements in set1");
		
		//创建set2
		
		Set<String> set2 = new HashSet<String>();
		//add method
		set2.add("London");
		set2.add("ShangHai");
		set2.add("Paris");
		
		System.out.println("\nset2 is " + set2);
		System.out.println(set2.size() + " elements in set2");
		
		//contains方法:检查是否包含一个字符串
		System.out.println("\nIs Taipei in set2? " 
		+ set2.contains("Taipei"));
		
		//addAll方法 :将另一个set的所有元素添加进来
		set1.addAll(set2);
		System.out.println("\nAfter adding set2 to set1, set1 is " + set1);
		
		//removeAll方法 : 删除另一个集合中的元素全部删除
		set1.removeAll(set2);
		System.out.println("After removing set2 from set1, set1 is " + set1);
		
		//retainAll方法 : 删除两个集合中相同的元素
		set1.retainAll(set2);
		System.out.println("After removing common elements in set2 "
				+ "from set1, set1 is " + set1);	
	}

}

运行结果:

[置顶] Set接口类:HashSet、LinkedHashSet、TreeSet_第1张图片

2、链式散列集LinkedHashSet

      LinkedHashSet用一个链表实现来扩展HashSet类,它支持对规则集内的元素排序。HashSet中的元素是没有被排序的,而LinkedHashSet中的元素可以按照它们插入的顺序提取。

测试CODE:

package set;

import java.util.*;

public class TestLinkedHashSet {

	/**
	 * 测试LinkedHashSet
	 * @author Sun1956
	 */
	public static void main(String[] args) {
		//创建set
		Set<String> set = new LinkedHashSet<String>();
		
		//Add
		set.add("London");
		set.add("Paris");
		set.add("New York");
		set.add("San Francisco");
		set.add("Beijing");
		set.add("New York");  
		
		System.out.println(set);
		
		//这里用for-each语句简化输出方法
		for (Object element: set)
			System.out.print(element.toString() + " ");
	}

}

运行结果:

3、树形集TreeSet

      测试CODE:

package set;
import java.util.*;

public class TestTreeSet {

	/**
	 * 使用TreeSet改写上一个程序,按照字母顺序显示字符串
	 * @author Sun1956
	 */
	public static void main(String[] args) {
		//created a hash set
		Set<String> set = new HashSet<String>();
		//Add
		set.add("London");
		set.add("Paris");
		set.add("San Francisco");
		set.add("Beijing");
		set.add("New York");
		//create a tree set
		TreeSet<String> treeSet = new TreeSet<String>(set);
		//按字母顺序排序
		System.out.println("Sorted tree set: " + treeSet);
		
		System.out.println("first() : " + treeSet.first());  //返回第一个元素
		System.out.println("last() : " + treeSet.last());    //返回最后一个
		System.out.println("headSet() : " 
				+ treeSet.headSet("New York"));    //返回小于New York的所有元素
		System.out.println("tailSet() : " 
				+ treeSet.tailSet("New York"));    //返回大于等于New York的所有元素
		
		System.out.println("lower(\"P\"): " + treeSet.lower("P"));   //返回小于P的一个元素
		System.out.println("higher(\"P\"): " + treeSet.higher("P"));  //大于P
		System.out.println("floor(\"P\"): " + treeSet.floor("P"));    //小于等于P
		System.out.println("ceiling(\"P\"): " + treeSet.ceiling("P"));  //大于等于
		System.out.println("pollFirst(): " + treeSet.pollFirst());    //删除treeSet中第一个
		System.out.println("pollLast(): " + treeSet.pollLast());     //删除treeSet中最后一个
		System.out.println("New tree set: " + treeSet);  //输出删除后的treeSet
		System.out.println();
	}

}

运行结果:

[置顶] Set接口类:HashSet、LinkedHashSet、TreeSet_第2张图片

你可能感兴趣的:(java,java,java,set,set,linkedhashset,hashset,TreeSet)