java-其他集合

LinkedList

List接口

LinkedList也实现了List接口,可以使用add,remove等方法

双向链表

LinkedList实现了双向链表接口,具有addFirst和addLast方法,可以在链表的头部和尾部插入结点

队列

LinkedList也实现了队列接口,有offer和poll方法,分别是入队和出队

 1 package 集合框架;
 2 
 3 import java.util.LinkedList;
 4 import java.util.Queue;
 5 import 集合框架.words;
 6 
 7 public class LinkedList练习 {
 8 
 9     public static void main(String[] args) {
10         Queue<words> q=new LinkedList<words>();
11         q.offer(new words('a'));
12         q.offer(new words('b'));
13         q.offer(new words('c'));
14         System.out.println(q.poll());
15         System.out.println(q.poll());
16         System.out.println(q.poll());
17     }
18 }

 

 


HashMap

存储方式

HashMap的存储方式是键值对,前者是键key,后者是值value。get函数需要传递进去一个键,从而得到一个值。键不能重复但是值可以重复。

 1 package 集合框架;
 2 
 3 import java.util.HashMap;
 4 
 5 public class HashMap练习 {
 6 
 7     public static void main(String[] args) {
 8         HashMap<String,Integer> h=new HashMap();
 9         h.put("aaa", 1);
10         h.put("bbb", 2);
11         h.put("ccc", 3);
12         System.out.println(h.get("aaa"));
13     }
14 }

 


HashSet

存储方式

HashSet中的元素不能重复,如果重复add进去,也不会存储下来

 1 package 集合框架;
 2 
 3 import java.util.HashSet;
 4 
 5 public class HashSet练习 {
 6     public static void main(String[] args) {
 7         HashSet<String> h=new HashSet();
 8         h.add("aaa");
 9         h.add("aaa");
10         for(String s:h)
11         {
12             System.out.println(s);
13         }
14     }
15 }

 

 存储顺序

HashSet存储的元素没有任何顺序,在不同的JVM版本中所能看到的同一个HashSet的顺序也不相同。

遍历

因为HashSet本身无序,并且没有类似键值对相对应的关系,因此没有get函数。

如果想遍历HashSet,只能通过迭代器或者增强型for循环(参考上面“存储方式”中的代码)

HashSet和HashMap的关系

HashSet中,封装了一个HashMap,而传递到HashSet中的值,作为被封装的HashMap中的“key”进行存储,它对应的“value”是一个命名为PRESENT的static的Object对象。


Collection和Collections

Collection是 Set List Queue和 Deque的接口
Queue: 先进先出队列
Deque: 双向链表

 

 Collections是一个容器的工具类,提供多种方法

 reverse反转

 1 package 集合框架;
 2 
 3 import java.util.Collections;
 4 import java.util.List;
 5 import java.util.ArrayList;
 6 
 7 public class Collections练习 {
 8     public static void main(String[] args) {
 9         List<Integer> l=new ArrayList();
10         for(int i=1;i<=10;i++)
11         {
12             l.add(i);
13         }
14         System.out.println("集合为"+l);
15         Collections.reverse(l);
16         System.out.println("反转后集合为"+l);
17     }
18 }

 

 

 shuffle混淆

 1 package 集合框架;
 2 
 3 import java.util.Collections;
 4 import java.util.List;
 5 import java.util.ArrayList;
 6 
 7 public class Collections练习 {
 8     public static void main(String[] args) {
 9         List<Integer> l=new ArrayList();
10         for(int i=1;i<=10;i++)
11         {
12             l.add(i);
13         }
14         System.out.println("集合为"+l);
15         Collections.shuffle(l);
16         System.out.println("混淆后集合为"+l);
17     }
18 }

 

 

 sort排序

 1 package 集合框架;
 2 
 3 import java.util.Collections;
 4 import java.util.List;
 5 import java.util.ArrayList;
 6 
 7 public class Collections练习 {
 8     public static void main(String[] args) {
 9         List<Integer> l=new ArrayList();
10         for(int i=1;i<=10;i++)
11         {
12             l.add(i);
13         }
14         System.out.println("集合为"+l);
15         Collections.shuffle(l);
16         System.out.println("混淆后集合为"+l);
17         Collections.sort(l);
18         System.out.println("排序后集合为"+l);
19     }
20 }

 

 swap交换

 1 package 集合框架;
 2 
 3 import java.util.Collections;
 4 import java.util.List;
 5 import java.util.ArrayList;
 6 
 7 public class Collections练习 {
 8     public static void main(String[] args) {
 9         List<Integer> l=new ArrayList();
10         for(int i=1;i<=10;i++)
11         {
12             l.add(i);
13         }
14         System.out.println("集合为"+l);
15         Collections.swap(l, 0, 9);
16         System.out.println("交换后集合为"+l);
17     }
18 }

 

 rotate滚动

 1 package 集合框架;
 2 
 3 import java.util.Collections;
 4 import java.util.List;
 5 import java.util.ArrayList;
 6 
 7 public class Collections练习 {
 8     public static void main(String[] args) {
 9         List<Integer> l=new ArrayList();
10         for(int i=1;i<=10;i++)
11         {
12             l.add(i);
13         }
14         System.out.println("集合为"+l);
15         Collections.rotate(l, 3);
16         System.out.println("滚动三个单位后集合为"+l);
17     }
18 }

 

 synchronizedList线程安全化

 1 package 集合框架;
 2 
 3 import java.util.Collections;
 4 import java.util.List;
 5 import java.util.ArrayList;
 6 
 7 public class Collections练习 {
 8     public static void main(String[] args) {
 9         List<Integer> l=new ArrayList();
10         List<Integer> safel=(List<Integer>)Collections.synchronizedList(l);
11     }
12 }

(2021.2.21 目前还没深入研究线程安全的问题,等我研究明白了回来补充这部分的内容)

 

posted @ 2021-02-20 21:38  _厨师沙拉  阅读(86)  评论(0)    收藏  举报