Collection是一个接口,允许集合中有重复元素,也能禁止元素重复;既可以强制排序也可以不限制顺序,下面看看Collection中一些常用的基本方法
1 Collection<String> hashSet = new HashSet<>(); 2 hashSet.add("hello Collection");// 添加元素 3 Collection<String> arrays=Arrays.asList("a","b","c"); 4 hashSet.addAll(arrays);//添加一个集合 5 System.out.println(hashSet.size());//获取集合元素个数 6 System.out.println(hashSet.contains("b"));//集合是否包含某个元素 7 System.out.println(hashSet.containsAll(arrays));//集合是否包含某组元素 8 Object[] elments=hashSet.toArray();//集合转数组 9 String[] strings=hashSet.toArray(new String[0]);//指定元素转换 10 hashSet.remove("a");//删除单个元素 11 hashSet.removeAll(arrays);//删除一组元素
Set不能有两个引用指向同一个对象,或者指向null,即使是a.equals(b)=true也不行,因为它是无重复对象组成的集合;如果在Set集合中添加已有的元素,并不会抛出异常,而是返回一个Boolean值false
继承之Set的SortedSet接口进一步扩充了集合的方法
1 SortedSet<String> treeSet = new TreeSet<>(); 2 treeSet.add("a"); 3 treeSet.add("b"); 4 treeSet.add("c"); 5 System.out.println(treeSet.first());//获取集合中的第一个元素 6 System.out.println(treeSet.last());//获取集合中的最后一个元素 7 //返回除了第一个元素之外的所有元素 8 SortedSet<String> tail= treeSet.tailSet(treeSet.first()+'\0'); 9 System.out.println(tail); 10 //返回除了最后一个元素之外的所有元素 11 SortedSet<String> head=treeSet.headSet(treeSet.last()); 12 System.out.println(head); 13 //截取第N个元素到M个元素之间的所有元素 14 SortedSet<String> middle=treeSet.subSet(treeSet.first()+'\0', treeSet.last()); 15 System.out.println(middle);
和集(Set)不同,List是有序的对象集合,并且可以包含重复元素,列表的大小可以随着元素的数量变化,不像数组一样固定,List也继承了Collection的方法,同时也扩展了一些方法
1 java.util.List<String> list=Arrays.asList("Hello","Java"); 2 java.util.List<String> arrayList=new ArrayList<>(list); 3 System.out.println(arrayList.get(0));//通过索引获取集合元素 4 arrayList.set(0, "Hi");//通过索引设置集合的元素 5 System.out.println(arrayList.get(0)); 6 arrayList.add(1, "Bob"); 7 System.out.println(arrayList);//通过索引插入元素 8 System.out.println(arrayList.indexOf("Bob"));//查询某个元素的位置 9 System.out.println(arrayList.lastIndexOf("Java"));//反向查询某个元素的位置 10 arrayList.retainAll(list);//删除与list不相同的元素 11 System.out.println(arrayList); 12 arrayList.clear();//清除所有元素 13 System.out.println(arrayList);
Map是一系列键值对,一个键对应一个值,可以把Map看作是Set加Collection组合的集合,Map的键就像Set一样,不允许有重复元素,同样来看下Map常用 的一些方法
1 Map<Integer , String> map=new HashMap<>(); 2 String[] words={"a","b","cc"}; 3 for (int i = 0; i < words.length; i++) { 4 map.put(i, words[i]);//通过put方法填充Map 5 } 6 System.out.println(map); 7 System.out.println(map.get(1));//获取键值为1对应的值 8 System.out.println(map.containsKey(5));//是否包含某个键 9 System.out.println(map.containsValue("b"));//是否包含某个值 10 //把映射关系的键和值分别作集合处理 11 Set<Integer> keys=map.keySet(); 12 System.out.println(keys); 13 Collection<String> values=map.values(); 14 System.out.println(values); 15 for (Map.Entry<Integer, String> elment: map.entrySet()) { 16 System.out.println(elment); 17 } 18 map.remove(1);//删除键值对 19 System.out.println(map);
通过Collections类的静态方法,可以对集合进行一些操作
1 java.util.List<Integer> numbers=Arrays.asList(12,5,6,8,11,4); 2 Collections.sort(numbers);//排序 3 System.out.println(numbers); 4 Collections.reverse(numbers);//反转 5 System.out.println(numbers); 6 Collections.shuffle(numbers);//打乱顺序 7 System.out.println(numbers); 8 //最大值、最小值 9 Collections.max(numbers); 10 Collections.min(numbers);
防止并发访问集合
1 java.util.List<String> list=Collections.synchronizedList(new ArrayList<String>()); 2 Map<Integer, String> map=Collections.synchronizedMap(new HashMap<Integer,String>());
只读集合
java.util.List<String> words=Collections.unmodifiableList(new ArrayList<String>());