zoukankan      html  css  js  c++  java
  • java基础-容器

    容器是指对对象的容纳,java中主要有这几个容器:list(列表)、set(集合)、map(映射)。所有容器都无法保存基本数据类型,需要先把基本数据类型变为封装类,用容器保存封装结果。

    一.List(列表)

    1.ArrayList,线性表,容量大小可变的数组  <===>tArrayLisk()

    2.LinkedList,链表,没有使用顺序存储机制,无法根据索引快速存取  <===>tLinkedList()

    3.迭代器遍历LIst  <===>demo2()

     1 public static void tArrayList(){
     2         /*
     3         ArrayList的构造方法:
     4         ArrayList a1=new ArrayList();   //构造一个空的线性表
     5         ArrayList a1=new ArrayList(b);   //根据已有类集构造线性表
     6         ArrayList a1=new ArrayList(20);   //构造指定初始容量的线性表
     7          */
     8         ArrayList a1=new ArrayList();
     9         a1.add("a");
    10         a1.add("z");
    11         a1.add("x");    //add(value),插入元素
    12         a1.remove(0);   //remove(index),根据数组索引删除元素
    13         a1.set(0,"z1");     //set(index,value),重设指定索引处的值
    14         System.out.println(a1.indexOf("z1"));   //indexOf(value),获取指定元素的索引
    15         a1.add("z1");
    16         System.out.println(a1.lastIndexOf("z1"));   //latIndexOf()value,获取指定元素最后一次出现的位置
    17         // subList(),获取列表的子列表,需要给出起止位置  listIterator(),生成一个列表迭代器,此迭代器功能强大
    18 
    19         for(int i=0;i<a1.size();i++){   //ArrayList.size()记录元素个数,用法同arr.length()
    20             System.out.print(a1.get(i)+",");
    21         }
    22 
    23     }
    24     public static void tLinkedList(){
    25         LinkedList l=new LinkedList();
    26         l.addFirst(1);  //addFirest(),向链表头添加元素
    27         l.addLast(10);  //addLast(),向链表尾添加元素
    28         l.removeLast();     //removeLast(),移除链表尾部元素
    29         System.out.println(l.getFirst());   //getFirst(),获取链表头元素
    30     }
    31     public static void demo2(){
    32         //使用迭代器遍历List
    33         List<String> l1=new ArrayList<String>();
    34         l1.add("a1");
    35         l1.add("a2");
    36         l1.add("a3");
    37         for(Iterator<String> it=l1.iterator();it.hasNext();){   //使用hasNext()判断序列中是否还有元素
    38             String s=it.next();     //使用Next()获取序列中下一个元素
    39             System.out.println(s);
    40         }
    41     }

    二.Set(集合)

    Set和List的区别:Set没有顺序,不允许保存相同值的元素。

    1.Iterator,迭代器,单向移动,实现遍历  <===>demo1()

    2.for-each遍历  <===>demo2()

    3.HashSet散列集,避免Set的元素重复  <===>demo3()

    4.TreeSet,实现红黑树数据结构后的set

    5.比较HashSet、TressSet、LinkedHashSet的区别  <===>demo4()

    public static void demo1(){
            Set<String> s1=new HashSet<String>();
            s1.add("a1");
            s1.add("a2");
            s1.add("a3");
            for(Iterator<String> it=s1.iterator();it.hasNext();){
                String s=it.next();
                System.out.println(s);
            }
        }
        public static void demo2(){
            Set<String> s1=new HashSet<String>();
            s1.add("a1");
            s1.add("a2");
            s1.add("a3");
            for(String s:s1){   //for-each遍历set,将每一次的值存在s中
                System.out.println(s);
            }
        }
        public static void demo3(){
            Set<Integer> s1=new HashSet<Integer>();     //new一个HashSet,通过下边的for循环为该set填充值
            for(int i=1;i<100;i++){
                Integer temp=new Integer(i%6);
                s1.add(temp);
            }
            for(Iterator<Integer> it=s1.iterator();it.hasNext();){      //通过Iterator遍历set
                System.out.println(it.next());
            }
        }
        public static void demo4(){
            //比较HashSet、TreeSet、LinkedHashSet的区别
            Set<Integer> s1=new HashSet<Integer>();
            Set<Integer> s2=new TreeSet<Integer>();
            Set<Integer> s3=new LinkedHashSet<Integer>();
            for(int i=0;i<5;i++){
                int s=(int)(Math.random()*100);
                Integer temp=new Integer(s);
                s1.add(temp);
                s2.add(temp);
                s3.add(temp);
                System.out.println("第"+i+"次产生的随机数为:"+s);
            }
            System.out.println("HashSet:"+s1);  //元素存放顺序和添加时的顺序无关
            System.out.println("TreeSet:"+s2);  //对set中的元素按照值进行排序存放
            System.out.println("LinkedHashSet:"+s3);    //元素存放顺序按照添加时的顺序
        }

    三.Map(映射)

    Map维护键值对,一个Map中不能有重复的键,每个键只能映射一个值,键与值都视为对象,Map允许null值,基于哈希表的Map接口实现,哈希表的作用是保证键的唯一性。

    1.Map遍历的三种方法

     1 public static void byValue(Map<String,String> map){
     2         String value=null;
     3         Iterator it= map.values().iterator();   //通过HashMap.values()得到“值”的集合,再去遍历值的集合
     4         while(it.hasNext()){
     5             value=(String)it.next();
     6             System.out.println(value);
     7         }
     8     }
     9     public static void byKey(Map<String,String> map){
    10         String key=null;
    11         String value=null;
    12         Iterator it=map.keySet().iterator();    //通过map.KeySet()得到key的集合
    13         while(it.hasNext()){
    14             key=(String)it.next();
    15             value=(String)map.get(key);
    16             System.out.println("key:"+key+",value:"+value);
    17         }
    18     }
    19     public static void byEntry(Map<String,String> map){
    20         String key=null;
    21         String value=null;
    22         Iterator it=map.entrySet().iterator();  //通过entrySet()实现
    23         while(it.hasNext()){
    24             Map.Entry entry=(Map.Entry) it.next();
    25             key=(String)entry.getKey();
    26             value=(String)entry.getValue();
    27             System.out.println("key:"+key+",value:"+value);
    28         }
    29     }

    2.HashMap散列映射

    3.其他Map

  • 相关阅读:
    设计模式:生产者消费者模式
    图解SSH原理
    监听Google Player下载并获取包名等信息
    android targetSdkVersion>=26收不到广播的处理
    ant property file刷新不及时
    maven的pom文件报错: must be "pom" but is "jar"
    AJAX其实就是一个异步网络请求
    String、StringBuffer、StringBuilder的区别
    Properties、ResourceBundle
    JavaWeb--Listener
  • 原文地址:https://www.cnblogs.com/jinziguang/p/11756656.html
Copyright © 2011-2022 走看看