zoukankan      html  css  js  c++  java
  • 五容器

    容器

    基本概念_Collection_Set_List接口介绍

       ·为什么需要集合

      数组插入,删除不可以改变数组的长度,数组具有一定的拘束性

       ·容器框架

      java集合框架提供了一套性能优良,使用方便的接口和类,它们位于java.util包中

      存放在集合中的数据叫做元素(element)      //集合只能存放对象

        Collection接口 (List 和 Set接口是Collection接口的子类接口)

      List接口  

      Set接口

       ·各接口的特点

      Collection接口存储一组不唯一,无序的对象

      List接口存储一组不唯一,有序(索引顺序)的对象

      Set接口存储一组唯一,无序的对象

    List接口ArrayList用法详解

       ·ArrayList的用法:

     1 package com.zqf.list_arraylist;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Iterator;
     5 import java.util.List;
     6 import java.util.ListIterator;
     7 import java.util.Scanner;
     8 
     9 import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable;
    10 
    11 public class TestArrayList {
    12     public static void main(String[] args) {
    13         //创建集合对象,接口new实现类
    14         List list = new ArrayList();
    15         //(1)add
    16         list.add("hello");
    17         list.add(123);        //自动装箱
    18         list.add(new Scanner(System.in));
    19         //(2)集合元素的个数size()
    20         System.out.println(list.size());
    21         System.out.println("集合是否为空:"+list.isEmpty());
    22         //(3)addAll(Collection c)
    23         List list2=new ArrayList();
    24         list2.add("hello");
    25         list2.add(123);
    26         list.add(list2);
    27         System.out.println("list集合中元素的个数:"+list.size());
    28         System.out.println(list);
    29         //(4)删除
    30         System.out.println("根据对象去删除:");
    31         list.remove("hello");
    32         System.out.println(list);
    33           //list.remove(123);         //认为123是索引
    34         list.remove(new Integer(123));
    35         System.out.println(list);
    36         list.add("world");
    37         list.removeAll(list2);
    38         list.retainAll(list2);
    39         System.out.println(list);
    40         
    41         //(5)判断
    42         System.out.println("hello在集合中是否存在:"+list.contains("hello"));
    43         System.out.println("java在集合中是否存在:"+list.contains("java"));
    44         //(6)清空元素中所有的集合对象
    45         System.out.println(list);
    46         System.out.println(list2);
    47         System.out.println(list.containsAll(list2));
    48         //list.clear();
    49         //System.out.println(list);
    50         
    51         //(7)获取指定索引位置上的元素对象
    52         System.out.println(list.get(1));
    53         //设置
    54         list.set(1, "java");
    55         System.out.println(list);
    56         //(9)在指定的索引位置上添加元素对象
    57         list.add(1,"html");
    58         System.out.println(list);
    59         //(10)查找元素在集合中的位置
    60         System.out.println(list.indexOf("java")+"	"+list.indexOf("sql"));
    61         //(11)遍历集合中元素的内容
    62         /**(1)使用加强for循环遍历集合中的元素*/
    63         System.out.println("
    使用加强for循环遍历集合中的元素
    ");
    64         for(Object obj:list){
    65             System.out.println(obj);
    66         }
    67         /**(2)使用普通for循环遍历集合中的元素对象*/
    68         System.out.println("
    使用普通for循环遍历集合中的元素对象
    ");
    69         for(int i=0;i<list.size();i++){
    70             System.out.println(list.get(i));
    71         }
    72         /**(3)使用迭代器*/
    73         System.out.println("
    使用迭代器遍历集合中的元素
    ");
    74         Iterator ite = list.iterator();      //Iterator为迭代器
    75 while(ite.hasNext()){ //判断集合中是否有元素对象 76 Object obj = ite.next(); 77 System.out.println(obj); 78 } 79 System.out.println("使用listIterator()遍历"); 80 ListIterator listIte = list.listIterator(); 81 System.out.println("正向遍历"); 82 System.out.println("到达集合的开头,后面还有元素对象吗?"+listIte.hasNext()); 83 System.out.println("到达集合的开头,前面有元素对象吗?"+listIte.hasPrevious()); 84 while(listIte.hasNext()){ 85 System.out.println(listIte.next()); 86 } 87 System.out.println("到达集合的末尾,后面还有元素对象吗?"+listIte.hasNext()); 88 System.out.println("到达集合的末尾,前面有元素对象吗?"+listIte.hasPrevious()); 89 System.out.println(" 逆向遍历集合中的元素 "); 90 while(listIte.hasPrevious()){ 91 System.out.println(listIte.previous()); 92 } 93 } 94 }

     JDK与JRE的区别

      JRE: Java Runtime Environment
      JDK:Java Development Kit
      JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。
      JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。
      如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
    JRE根据不同操作系统(如:windows,linux等)和不同JRE提供商(IBM,ORACLE等)有很多版本,最常用的是Oracle公司收购SUN公司的JRE版本。

    ArrayList_JDK_源码分析 

     1 package com.zqf.list_arraylist;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Iterator;
     5 import java.util.List;
     6 import java.util.ListIterator;
     7 import java.util.Scanner;
     8 
     9 import com.sun.org.apache.xerces.internal.util.SynchronizedSymbolTable;
    10 
    11 public class TestArrayList {
    12     /**ArrayList源码分析
    13     *(1)无参构造方法
    14     *        this.elementData 是一个Object类型的数组
    15     *        DEFAULTCAPACITY_EMPTY_ELEMENTDATA;也是一个Object类型的数组
    16     *        DEFAULTCAPACITY_EMPTY_ELEMENTDATA={};默认长度为0
    17     *    public ArrayList(){
    18              this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
    19              //相当于this.elementData={};
    20      }
    21      (2)带参构造方法
    22      public Arraylist(int initialCapacity){                
    23          if(initialCapaty > 0){
    24              this.elementData = new Object[initialCapacity];           
    25              //this.elementData = new Object[20];  
    26              }
    27      }  
    28      (3)添加方法add(Object obj)
    29      public boolean add(E e){
    30          //检测空间容量是否够用
    31          ensureCapacityInternal(size +1);    //Increments modCount!
    32          //添加元素    elementData[size]=e; size++;
    33          elementData[size++] = e;
    34          return true;
    35      }
    36      (4)检测空间容量是否够用
    37      private void ensureCapacityInternal(int minCapacity) {
    38          ensureExplicitCapacity(calculaeCapacity(elementData,minCapacity));
    39      }
    40          首先调用执行,计算容量
    41          calculateCapacity(elementData,minCapacity)
    42          //calculateCapacity方法定义
    43          private static int calculateCapacity(Object[] elementData,int minCapacity){
    44         if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {        //true
    45                     //Math.max(10,1)
    46             return Math.max(DEFAULT_CAPACITY, minCapacity);
    47         }
    48         return minCapacity;        //执行完之后的结果为 10 
    49         }
    50         //容量计算完毕后,执行ensureExplicitCapacity方法   ensureExplicitCapacity(10)
    51          ensureExplicitCapacity方法定义
    52     **/
    53     public static void main(String[] args) {
    54         ArrayList list = new ArrayList();
    55         list.add("hello");
    56         Object [] obj = {};
    57     }
    58 }

    LinkedList的特点_链表_JDK源码分析

       LinkedList的特点

       链表

      单向链表:(1)一个节点:数据域(data),指针域(next)

           (2)多个节点组成单向链表

      双向列表:(1)一个节点

           (2)多个节点组成链表

       JDK源码分析

      add(Object obj)

     1 package com.zqf.linkedlist;
     2 
     3 import java.util.LinkedList;
     4 
     5 public class TestLinkList {
     6     /**
     7      * LinkedList底层数据结构是链表,删除和添加元素效率较高,数据结构复杂
     8      * ArrayList底层数据结构是数组,删除和添加元素效率比较低
     9      * LinkedList底层源码分析
    10      * (1)构造方法
    11      * public LinkedList(){
    12      * }
    13      * (2)添加方法
    14      * public boolean add(E e) {
    15         linkLast(e);
    16         return true;
    17     }
    18      */
    19     public static void main(String[] args) {
    20         LinkedList list = new LinkedList();
    21         //添加元素
    22         list.add("hello");
    23         list.addFirst("java");
    24         list.addLast("world");
    25         //删头,删尾
    26         //list.removeLast();
    27         //list.removeFirst();
    28         System.out.println(list);
    29         //遍历
    30         for(Object obj:list){
    31             System.out.println(obj);
    32         }
    33     }
    34 }

    未完待续........(实在是看不懂了,等基础好了,在回头看)

  • 相关阅读:
    常见DOS命令总结
    常见DOS命令总结
    HDU 6119 小小粉丝度度熊【线段合并+尺取法】(2017"百度之星"程序设计大赛
    HDU 6119 小小粉丝度度熊【线段合并+尺取法】(2017"百度之星"程序设计大赛
    【数论】——逆元
    【数论】——逆元
    需要了解的几个Java基础点
    TreeMap读源码总结
    Reactor模式
    Maven常见问题总结
  • 原文地址:https://www.cnblogs.com/zqfdgzrc/p/10633765.html
Copyright © 2011-2022 走看看