Java 集合类(一)

今天咱们先讲一下Collection:html

  1. Collection和Collections的区别:
  • java.util.Collection是一种java集合接口,它提供了对集合对象的基本操做通用接口方法,同时它还有不少具体实现:

     

     

     注:以上图片只列举经常使用集合类java

  • java.util.Collections是一个包装类,它包含许多有关集合操做的静态多态方法,此类不能实例化,它就像个工具类,服务与java的Collection。有关Collections的具体方法可参考JDK说明文档(部分也可见),下面我举出几个方法示例:

      

import java.util.Collection; import java.util.Collections; import java.util.ArrayList; import java.util.List; public class test { private double[] a = {123,33,423,655,4553}; List<Double> l = new ArrayList(); List<Double> l2 = new ArrayList(); public static void main(String[] args) { new test().sort(); } public void sort(){ for(int i = 0; i<a.length;i++ ){ l.add(a[i]); } Collections.sort(l); for(int i = 0 ;i<a.length;i++){ System.out.println(l.get(i)); } } 
}

  运行结果以下:数组

可在上面代码的基础上添加同类方法,如:安全

把上面sort()中的Collections.sort(l);--->Collections.shuffle(l);    //随机排序工具

                                                   --->Collections.reverse(l);    //反转排序post

                                                   --->Collections.min(l);      //返回最小元素(max,最大)学习

                                                   --->Collections.fill(l,"334");   //用334替换全部元素spa

                                                   ......设计

 

   2.常见java容器的比较:code

接口

特性

实现类

实现类特性

成员要求

List

线性、有序的存储容器,可经过索引访问元素

ArrayList

数组实现。非同步。

 

Vector

相似ArrayList,同步。

 

LinkedList

双向链表。非同步。

 

Map

保存键值对成员

HashMap

基于哈希表的 Map 接口的实现,知足通用需求

任意Object对象,若是修改了equals方法,需同时修改hashCode方法

TreeMap

默认根据天然顺序进行排序,

或者根据建立映射时提供的 Comparator进行排序

键成员要求实现Comparable接口,或者使用Comparator构造TreeMap。键成员通常为同一类型。

LinkedHashMap

相似于HashMap,但迭代遍历时取得“键值对”的顺序是其插入顺序或者最近最少使用的次序

与HashMap相同

IdentityHashMap

使用==取代equals()对“键值”进行比较的散列映射

成员经过==判断是否相等

WeakHashMap

弱键映射,容许释放映射所指向的对象

 

ConcurrentHashMap

线性安全的Map

 

Set

成员不能重复

HashSet

为快速查找设计的Set

元素必须定义hashCode()

TreeSet

保持次序的Set,底层为树结构

元素必须实现Comparable接口

LinkedHashSet

内部使用链表维护元素的顺序(插入的次序)

元素必须定义hashCode()

    注:在知足要求的状况下,Map应尽可能使用HashMap,Set应尽可能使用HashSet

   3.Collection的学习:

   实例1:

import java.util.*; public class SimpleCollection{ public static void main(String[] args){ Collection<Integer> c = new ArrayList<Integer>(); for(int i = 0;i < 10; i++) c.add(i); //Autoboxing for(Integer i: c) System.out.println(i +", "); } } /* 0,1,2,3,4,5,6,7,8,9, */ 

  实例2:

/* 如何向Collection添加一组元素 */ //如下是方法体 Collection<Integer> collection = new ArrayList<Integer> (Arrays.asList(1,2,3,4,5)); //Array像Collections同样是工具类 Integer[] moreInt = {6,7,8,9,10}; Collection.addAll(Arrays.asList(moreInt)); Collections.addAll( collection,11,12,13,14); //Collection对象做参数 Collections.addAll( collection, moreInt); List<Integer> list = Arrays.asList(16,17,18); list.set(1,99); //list.add(21) //错误,asList产生的List的长度不可变,只能修改元素值

  下一节学习List部分!!

###    学习历来都是一个过程,对对错错对对...若文中有错误,还望读者批评指出      ###

转载于:https://www.cnblogs.com/allenpengyu/p/3452313.html