集合类:Collection--List, Set, Map(三)
,差集)
set1.removeAll(set2);
System.out.println("After removing set2 from set1, set1 is " + set1);
//retainAll方法 : (得到交集)
set1.retainAll(set2);
System.out.println("Show the common elements with set2 "
+ "that in set1, set1 is " + set1);
}
}
Result:
Display the elements in set1:
San Francisco New York Paris London BeiJing
set1 is [San Francisco, New York, Paris, London, BeiJing]
5 elements in set1
set1 is [San Francisco, New York, Paris, BeiJing]
4 elements in set1
set2 is [Paris, London, ShangHai]
3 elements in set2
Is Taipei in set2 false
After adding set2 to set1, set1 is [San Francisco, New York, Paris, London, ShangHai, BeiJing]
After removing set2 from set1, set1 is [San Francisco, New York, BeiJing]
Show the common elements with set2 that in set1, set1 is []
3.3 LinkedHashSet
LinkedHashSet 的最大优点在于,它能保持元素的插入顺序,有些情况非常适合使用LinkedHashSet: 保持List或Array里元素的顺序. 具体实例可以有: 若从
数据库里取出一个List的数组, 当然可能通过SQL里的关键字distinct而在数据库里就排重,但可能出于什么特殊的考虑而没有调用distinct,这样在
Java里想排重就自然 地想到了Set,而初次想到的当然也就是HashSet, 但写出来后测试时一看结果, 不对呀, 原来从数据库里取出数据明明是已Order好的, 怎么显示出的却乱了, 转念一想可不是嘛: 在用Set的HashSet排重时,它并不关心你原来数据的顺序.这时LinkedHashSet就可救火了.
3.4 TreeSet
TreeSet 的最大优点在于,它可以实现可排序的Set, 比linkedset强大(只能按输入顺序排序)。它就成了 List (有序,可重复) 和 Set(无序,不可重复) 的中间类型。 在特定的时候需要使用TreeSet。
[java]
package set;
import java.util.*;
public class TestTreeSet {
/**
* 使用TreeSet改写上一个程序,按照字母顺序显示字符串
* @author Sun1956
*/
public static void main(String[] args) {
//created a hash set
Set set = new HashSet();
//Add
set.add("London");
set.add("Paris");
set.add("San Francisco");
set.add("Beijing");
set.add("New York");
//create a tree set
TreeSet treeSet = new TreeSet(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();
}
}
Result:
Sorted tree set: [Beijing, London, New York, Paris, San Francisco]
first() : Beijing
last() : San Francisco
headSet() : [Beijing, London]
tailSet() : [New York, Paris, San Francisco]
lower("P"): New York
higher("P"): Paris
floor("P"): New York
ceiling("P"): Paris
pollFirst(): Beijing