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