zoukankan      html  css  js  c++  java
  • 集合类--容器

    一.集合类:专门用来存储java类的对象,数组长度可变,存储的是引用型的元素对象,之所以可以存储基本类型数据是因为系统的自动装箱功能

    二.容器关系图

        

    三.Coolection接口是构造集合框架的基础,声明了所有集合类的核心方法

        

     1 import java.util.ArrayList;
     2 //removeAll移除指定集合(交集)
     3 public class Demo_removeAll
     4 {
     5    public static void main(String[] args) 
     6    {
     7     ArrayList a=new ArrayList();
     8     a.add("小");
     9     a.add("机");
    10     a.add("灵");
    11     a.add("鬼");
    12     
    13     ArrayList b=new ArrayList();
    14     b.add("小");
    15     
    16     a.removeAll(b);
    17     System.out.println(a);
    18    }
    19 }

         

    四.实现list接口的类

        4.1.1 ArrayList(数组列表),可以把ArrayList看做一个长度可变的数组

       4.1.2 add方法-->添加元素

             get方法-->获取元素

             size()-->元素个数

      4.1.3 ArrayList集合底层是用数组来保存元素的,增加或删除元素,会导致创建新的数组,效率低,不适合做大量操作

     1 import java.util.ArrayList;
     2 
     3 public class Test14 
     4 {
     5   public static void main(String[] args) 
     6   {
     7       //定义一个数组列表
     8       ArrayList array=new ArrayList();
     9       //使用add方法添加三个字符串值进去
    10       array.add("不要为了合群而合群");
    11       array.add("那纯碎是浪费你的青春");
    12       array.add("努力最大的意义我终于明白了");
    13       //使用get方法获取数组列表中的元素
    14       String s=(String) array.get(0);
    15       String s1=(String) array.get(1);
    16       String s2=(String) array.get(2);
    17       
    18       System.out.println(s);
    19       System.out.println(s1);
    20       System.out.println(s2);
    21       System.out.println("********************");
    22       
    23       for(int i=0;i<array.size();i++)
    24       {
    25           System.out.println(array.get(i));
    26       }
    27        System.out.println("**********************");
    28        
    29       System.out.println(array.get(0));
    30       System.out.println(array.get(1));
    31       System.out.println(array.get(2));
    32       System.out.println("*********************");
    33       
    34       //添加几个数字进去
    35       array.add(540);
    36       array.add(8);
    37       System.out.println(array.indexOf(540));//元素540的下标位置
    38   }
    39 }

     4.2.1 LInkedLIst(链表)集合

    引用的方式来链接所有元素,插入新元素-->修改元素之间的这种引用关系(就是对象地址)

    五.实现set接口的类

      5.1 hashCode类:根据对象哈希值来确定元素在集合中的位置

       5.2 hashCode无序不可重复

       5.3 添加对象时,先调用对象hashCode方法确定存储位置,再调用equals方法确保没有该位置重复元素(简单的理解就是不能添加相同引用对象,因为地址相同)

     1 import java.util.HashSet;
     2 
     3 public class Test15
     4 {
     5    public static void main(String[] args)
     6    {
     7       HashSet set=new HashSet();//创建HashSet对象
     8       set.add(new Person("张三"));//传入引用对象元素
     9       set.add(new Person("李四"));
    10       set.add(new Person("张三"));//元素值虽然相同,但比较的是地址
    11       
    12       System.out.println(set);//调用toString方法,set是无序的,不可重复
    13       
    14       System.out.println("*************************");
    15       
    16       set.clear();//清空元素
    17       
    18       Person p=new Person("张三");
    19       System.out.println(set.add(p));//若成功插入显示true
    20       System.out.println(set);
    21     //set添加新的元素时,会检查set中的原有元素是否和插入新元素equals
    22      //若有则不能添加,返回false
    23       System.out.println(set.add(p));
    24       
    25       System.out.println("**************");
    26       set.clear();
    27       String s1="小冰晶";
    28       String s2="小冰晶";
    29       System.out.println("hash code:"+s1.equals(s2));//证明了set接口是不重复
    30       System.out.println(set.add(s1));
    31       System.out.println(set);
    32       System.out.println(set.add(s2));//s2和s1地址相等
    33    }
    34 }
    35 
    36 class Person
    37 {
    38     String name;//姓名属性
    39     //构造方法初始化值
    40     public Person(String name)
    41     {
    42         this.name=name;
    43     }
    44     //重写toString方法
    45     public String toString()
    46     {
    47         return name;
    48     }
    49 }

    六.Iterator迭代器

      

     1 import java.util.HashSet;
     2 import java.util.Iterator;
     3 
     4 public class Demo_Iterator
     5 {
     6      public static void main(String[] args) 
     7      {
     8        //创建HashSet对象
     9          HashSet it=new HashSet();
    10          //添加元素对象
    11          it.add("学");
    12          it.add("习");
    13          it.add("使");
    14          it.add("我");
    15          it.add("快");
    16          it.add("乐");
    17          //迭代器管理获得迭代对象
    18          Iterator lo=(Iterator) it.iterator();
    19          //循环遍历
    20          while(lo.hasNext())//用游标判断是否有下一个元素
    21          {
    22              String str=(String)lo.next();
    23              System.out.print(str+" ");
    24          }
    25          System.out.println();
    26          System.out.println("*******************");
    27          
    28          for(Iterator in=it.iterator();in.hasNext();)
    29          {
    30              String str1=(String)in.next();
    31              System.out.print(str1+" ");
    32          }
    33      }
    34 }

     七.映射接口Map-->给定一个关键字得到它的值,可理解为数学中的函数中的自变量和因变量的关系

    7.1 Map接口不能出现重复的key

    7.2 两个常用实现Map接口的类:HashMap(散列表实现)和TreeMap(二叉树原理) 

     

     1 /**
     2  * void put(Object key,Object Value)指定键和与其相对应的映射值
     3  * Set KeySet返回此映射中包含的键的Set视图
     4  * Object get(Object key)放入键得到映射的值
     5  */
     6 import java.util.HashMap;
     7 import java.util.Iterator;
     8 import java.util.Map;
     9 import java.util.Set;
    10 
    11 public class Demo_Map
    12 {
    13    public static void main(String[] args) 
    14    {
    15        Map map=new HashMap();//创建Map接口对象-->父类引用指向子类对象
    16        map.put("巫妖果子", "周俊明");//加入键值和对应的值
    17        map.put("叩骨", "吴梦婷");//加入键值和对应的值
    18        map.put("哒姐姐", "肖群");//加入键值和对应的值
    19        
    20        System.out.println(map);
    21        Set set=map.keySet();//获得存储Map中的所有键的set集合
    22        
    23        for(Iterator it=set.iterator();it.hasNext();)//使用迭代器遍历键
    24        {
    25            String key=(String)it.next();//得到键
    26            String value=(String)map.get(key);//输入键得到相应值
    27            System.out.println(key+"="+value);
    28        }
    29     }
    30 }

     八.TreeMap

     1 import java.util.Map;
     2 import java.util.TreeMap;
     3 /**
     4  * TreeMap的特点:
     5  *         TreeMap底层采用的是二叉树算法,可以实现自动对键进行排序
     6  *         TreeMap可以保证键的顺序
     7  * @author 罗摩衔那
     8  *
     9  */
    10 public class Demo_TreeMap
    11 {
    12   public static void main(String[] args) 
    13   {
    14     Map<String,String>map=new TreeMap<>();
    15     map.put("001","小龙女");
    16     map.put("002","独孤求败");
    17     map.put("003","万古长空-妖帝空");
    18     map.put("004","一朝风月-妖帝月");    
    19     System.out.println(map);
    20    }
    21 }

  • 相关阅读:
    基数排序
    计数排序和桶排序
    部署Java Web项目到云服务器的步骤全解析
    IP地址0.0.0.0/0是什么意思
    Tomcat在阿里云Centos7上正常启动,但浏览器无法访问的解决方法
    eclipse光标怎么返回上一次浏览的位置
    IDEA设置方法自动显示参数提示
    socket通信模型、socket中的accept()阻塞与read()阻塞
    Ubuntu18.04 下修改 root密码
    Ubuntu18.04 安装 VMwareTools
  • 原文地址:https://www.cnblogs.com/zjm1999/p/10029277.html
Copyright © 2011-2022 走看看