zoukankan      html  css  js  c++  java
  • Java 集合类(一)

    今天我们先讲一下Collection:

    1. Collection和Collections的区别:
    • java.util.Collection是一种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);    //反转排序

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

                                                       --->Collections.fill(l,"334");   //用334替换所有元素

                                                       ......

       2.常见java容器的比较:

    接口

    特性

    实现类

    实现类特性

    成员要求

    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部分!!

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

  • 相关阅读:
    必读:Spark与kafka010整合
    6 个开源的家庭自己主动化工具 | Linux 中国
    承上 DBlink 与 SCN | 新增视图找出外部 SCN 跳变
    NetBeans使用Consolas中文乱码的解决
    IDEA community + Gradle + Gretty 调试 servlet 应用 + war包部署到tomcat
    解决ubuntu下IntelliJ IDEA无法锁定到启动器的问题
    virtualbox安装android6.0并设置分辨率为1920x1080x32
    Ubuntu安装Sqlite报错:No module named 'ConfigParser'
    Linux常用指令笔记
    解决Warning Couldn't flush user prefs: java.util.prefs.BackingStoreException: Couldn't get file lock.
  • 原文地址:https://www.cnblogs.com/allenpengyu/p/3452313.html
Copyright © 2011-2022 走看看