LinkedHashSet与Set,数组与集合相互转换

LinkedHashSet与Set:

 1 package test;
 2 
 3 import java.util.Arrays;
 4 import java.util.HashSet;
 5 import java.util.LinkedHashSet;
 6 import java.util.Set;
 7 /** 
 8  *  LinkedHashSet与HashSet的区别就是前者数据严格按照插入的顺序存放,后者无顺序。 
 9  *  删除之后会去掉那个位置,新增的数据将在集合的末尾。 
10  *  HashSet 内部使用HashMap实现<br> 
11  *  而LinkedHashSet内部使用LinkedHashMap实现。  
12  */ 
13 public class LinkedHashSetTest {
14 
15     public static void main(String[] args) {
16         // TODO Auto-generated method stub
17         test(new HashSet<Integer>());
18         System.out.println("------------------------");
19         test(new LinkedHashSet<Integer>()); 
20     }
21 
22     public static void test(Set<Integer> set) {  
23         System.out.println(set.getClass().getName());  
24         // 增加10个数据  
25         for (int i = 100; i <= 110; i++) {  
26             set.add(i);  
27         }  
28         // 看看里面数据的情况  
29         showSet(set);  
30   
31         // 删除一个数据  
32         set.remove(101);  
33         // 看看删除后的情况  
34         showSet(set);  
35   
36         // 增加三个数据,看结果  
37         set.add(98);  
38         set.add(101);  
39         set.add(118);  
40         showSet(set);  
41     }  
42   
43     /** 
44      * 显示Set里面的数据。 
45      *  
46      * @param set 
47      */  
48     private static void showSet(Set<Integer> set) {  
49         System.out.println(set.toString());  
50     }  
51     
打印语句如下:
java.util.HashSet
[102, 103, 100, 101, 110, 108, 109, 106, 107, 104, 105]
[102, 103, 100, 110, 108, 109, 106, 107, 104, 105]
[102, 103, 100, 101, 98, 110, 108, 109, 106, 107, 104, 105, 118]
------------------------
java.util.LinkedHashSet
[100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110]
[100, 102, 103, 104, 105, 106, 107, 108, 109, 110]
[100, 102, 103, 104, 105, 106, 107, 108, 109, 110, 98, 101, 118]
 

数组与集合相互转换:

 

 1 package test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Arrays;
 5 import java.util.HashSet;
 6 import java.util.List;
 7 
 8 public class ArrayAndCollection {
 9 
10     public static void main(String[] args) {
11         System.out.println("集合转数组");
12         convertCollectionToArray();
13         System.out.println();
14         System.out.println("数组转集合");
15         convertArrayToCollection();
16     }
17 
18     /** 
19      * 集合转数组
20      * List,Set转换为数组的方法。toArray函数有两种形式,一种无参数,一种带参数,注意带参数形式中,要指明数组的大小。
21      * 在转化为其它类型的数组时需要强制类型转换,并且,要使用带参数的toArray方法,参数为对象数
22      * */
23     public static void convertCollectionToArray() {
24         
25         ArrayList<String> list = new ArrayList<String>();
26         list.add("p");
27         list.add("p");
28         list.add("p");
29         list.add("p");
30         list.add("p");
31         System.out.println("初始list大小==="+list.size());
32         
33 //        String[] str1 = (String[])list.toArray();//类型转换异常
34         String[] str2 = list.toArray(new String[list.size()]);//建议使用这种带参数的方式新建数组,可避免类型转换异常(无参数时)
35         System.out.println("list转成数组后str2[]==="+str2.length);
36         
37         
38         HashSet<String> set = new HashSet<String>();
39 //        String[] str3 = (String[])set.toArray();
40         String[] str4 = set.toArray(new String[list.size()]);
41         System.out.println("set转成数组后str4[]==="+str4.length);
42        }
43     
44     /**
45      * 数组转集合
46      * 
47      */
48     public static void convertArrayToCollection(){
49         
50         //Arraylist
51         String [] str= {"a","c","c","v","n","a"};
52         System.out.println("初始数组大小==="+str.length);
53         
54         List<String> strlist= new ArrayList<String>();
55         strlist=  Arrays.asList(str);
56         System.out.println("str[]转成strlist后==="+strlist.size());
57         
58         //Set,将数组转换成List后,再用List构造Set
59         HashSet<String> set = new HashSet(Arrays.asList(strlist)); 
60         System.out.println("str[]转成set后==="+set.size()+"----"+set.toString());
61         
62         //int类型另作处理(只能做integer进行处理)
63         int[] numbers = {7, 7, 8, 9, 10, 8, 8, 9, 6, 5, 4};
64         int size = numbers.length;
65         System.out.println("初始数组numbers[]大小==="+numbers.length);
66         Integer[] array = new Integer[size];
67         for (int i = 0; i < numbers.length; i++) {
68          Integer integer = numbers[i];
69          array[i] = integer;
70          }
71         List<Integer> intlist = Arrays.asList(array);
72         System.out.println("int[]转成intlist后==="+intlist.size());
73       
74     }
75     
76 }

输出语句:

集合转数组
初始list大小===5
list转成数组后str2[]===5
set转成数组后str4[]===5

数组转集合
初始数组大小===6
str[]转成strlist后===6
str[]转成set后===1----[[a, c, c, v, n, a]]
初始数组numbers[]大小===11
int[]转成intlist后===11

 

posted @ 2014-08-20 16:39  寡蛋  阅读(4425)  评论(0编辑  收藏  举报