Set接口:可以包含多个元素,但是不能记住元素的添加顺序,因此不允许包含相同的元素。Set接口继承Collection接口,没有提供任何额外的方法,其用法与Collection一样,只是特性不同(Set重的元素不重复)
HashSet输出是随机的没有进行排序,TreeSet进行自然排序,根据元素本身的顺序进行排序
代码示例:
HashSet:
public static void main(String[] args) {
HashSet<String> h = new HashSet<String>();
h.add("第1");
h.add("第1");
h.add("第2");
h.add("第3");
for(String a:h){
System.out.println(a);
}
h.remove("第1");
System.out.println("---------");
Iterator<String> it = h.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
TreeSet:
public static void main(String[] args) {
TreeSet<String> t = new TreeSet<String>();
t.add("第1");
t.add("第1");
t.add("第2");
t.add("第3");
for(String a:t){
System.out.println(a);
}
}
Queue接口:队列Queue通常以“先进先出(FIFO)”的方式排序各个元素,最先 入队的元素最先出队。Queue接口继承Collection接口,除Collection 接口中的基本操作外,还提供了队列的插入,提取和检查操作,且每个操作 都存在两种形式:一种操作失败时抛出异常;另一种操作失败时返回一个特 殊值(null或false)
链接链表LinkedList是Deque和List两个接口的实现类,兼具队列和列表两种特性,是最常使用的集合类之一。LinkedList不是基于线程安全的,如果多个线程同时访问一个LinkedList实例,而其中至少有一个线程从结构上修改该列表是,则必须有外部代码手动保持同步。
代码示例:
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<Integer>();
for(int i = 1; i < 5; i++){
list.add(i);
}
System.out.println(list);
list.offer(5);
System.out.println(list);
list.offer(-1);
System.out.println(list);
for(int i = 0; i < list.size();i++){
System.out.println(list.get(i));
}
System.out.println(list.peekFirst());
System.out.println(list);
System.out.println(list.pollFirst());
System.out.println(list);
System.out.println(list.pop());
System.out.println(list);
}
HashMap和TreeMap是Map体系中两个常用的实现类,其特点如下:
1.HashMap是基于哈希算法的Map接口的实现类,该实现类提供所有映射操作,并允 许使用null键和null值,但不能保证映射的顺序,即是无序映射集合;
2.TreeMap是基于“树”结构来存储的Map接口实现类,可以根据其键的自然顺序进行 排序,或定制排序方法。
代码示例:
HashMap:
public static void main(String[] args) {
//因为Map是以键值对得形式存储的,所以要指定两个泛型类型
HashMap<String,String> hm = new HashMap<String,String>();
hm.put(null, null);
hm.put("a", "zhangsan");
hm.put("b", "lisi");
hm.put("c", "wangwu");
System.out.println( hm.get(null));
System.out.println( hm.get("a"));
System.out.println( hm.get("b"));
System.out.println( hm.get("c"));
hm.remove("a");
System.out.println( hm.get("a"));
}
TreeMap:
public static void main(String[] args) {
TreeMap<String,String> t = new TreeMap();
t.put("1", "李四");
t.put("2", "张三");
//TreeMap不允许存放空值,也不能获取键为空的值
//t.put(null, null);
String a = t.get("1");
System.out.println(a);
}