zoukankan      html  css  js  c++  java
  • java基础---集合

    1-Java集合的特点

      Collection接口:不唯一,无序

      List接口:不唯一,有序

              其中常用类:ArrayListLinkedList

              ArrayList实现了长度可变的数组;遍历元素和随机访问元素的效率比较高

              LinkedList采用链表存储方式。插入、删除元素时效率比较高

      Set接口:唯一,无序

      Map接口:键值对,提供key

     

      接口可以继承接口

     

    2-List集合常用方法

     

      add(Object o) 向列表的尾部追加指定的元素

     

      add(int index,Object o) 在列表的指定位置插入指定元素

     

      get(int index) 返回列表中指定位置的元素

     

      contains(Object o) 如果列表中包含指定的元素,则返回true

     

      remove(int index) 移除列表中指定位置的元素

     

      remove(Object o) 移除列表中出现的首个指定元素

     

      clear() 从列表中移除所有元素

     

      size() 返回列表中的元素数

     

    举例:

                    //ArrayList的使用

    ArrayList alist=new ArrayList();

     

    //添加元素

    alist.add("a");

    alist.add(1,"b");

    alist.add(2,"c");

    alist.add(3,"d");

    alist.add(4,"e");

     

    //获取集合最后一个元素

    Object ob=alist.get(alist.size()-1);

    System.out.println("集合中的最后一个元素是:"+ob);

     

    //获取集合元素个数

    System.out.println("集合元素个数:"+alist.size());

     

    //循环迭代集合

    for(Object s:alist){

    System.out.print(s+" ");

    }

    System.out.println();

     

    //查看元素

    if (alist.contains("c")) {

    System.out.println("存在对象");

    }else{

    System.out.println("不存在");

    }

     

    //移除元素

    alist.remove(3);

    System.out.println("查看移除后的元素");

    for(Object s:alist){

    System.out.print(s+" ");

    }

     

               

     

    3-ArrayList

      添加元素add()

      删除元素remove()

      获取元素get()

      修改,先查询对象是否存在,再修改对象的属性

      

      特点,可变数组,查询效率比较高

     

    举例:

    //集合中存放的元素默认都是Object

    ArrayList alist=new ArrayList();

    User u1=new User("u001", "123456");

    User u2=new User("u002", "123456");

    User u3=new User("u003", "123456");

    User u4=new User("u004", "123456");

    User u5=new User("u005", "123456");

     

    //添加元素

    alist.add(u1);

    alist.add(u2);

    alist.add(u3);

    alist.add(u4);

    alist.add(u5);

     

    //获取元素集合

    System.out.print("集合元素个数为");

    System.out.println(alist.size());

     

    //循环迭代集合

    for(Object s:alist){

       System.out.println(s+" ");

    }

    System.out.println();

     

    //获取集合中第3个元素

    Object ob=alist.get(2);

    //方法一:一般情况,使用父类方法

    System.out.println("显示第三个元素");

    System.out.println(ob);

    //方法二:强制转换

    User u=(User)ob;

    System.out.println(u.getUname()+","+u.getPassword());

            System.out.println();

     

    //移除元素

    alist.remove(u3);

    System.out.print("移除后元素 ");

    for (Object object : alist) {

    System.out.println(object);

    }

    System.out.println();

     

    //查看元素

    System.out.print("是否存在u2");

    if (alist.contains(u2)) {

    System.out.println("存在对象");

    }else{

    System.out.println("不存在");

    }

     

    //查看集合中是否存在名称为u004User对象,如果存在,修改密码为888888

    for (int i = 0; i <alist.size(); i++) {

    User use=(User) alist.get(i);

    if (use.getUname().equals("u004")) {

    System.out.println("元素存在,修改密码");

    use.setPassword("888888");

    System.out.println("修改密码成功");

    break;

    }

    }

     

    //查看修改完的集合中元素

    for(Object s:alist){

       System.out.println(s+" ");

    }

       

    4-LinkedList:插入、删除元素时效率比较高

     

      addFirst(Object o) 将给定元素插入此列表的开头

     

      addLast(Object o) 将给定元素追加到此列表的结尾

     

      getFirst() 返回此列表的第一个元素

     

      getLast() 返回此列表的最后一个元素

     

      reomveFirst() 移除并返回此列表的第一个元素

     

      removeLast() 移除并返回此列表的最后一个元素

     

     父类的声明子类的实现,不能调用子类的方法

     

    举例:

                LinkedList list=new LinkedList();

     

                User u1=new User("u001","123456");

        User u2=new User("u002","123456");

        User u3=new User("u003","123456");

        User u4=new User("u004","123456");

        User u5=new User("u005","123456");

     

        //添加元素

        list.add(u1);

        list.add(u2);

        list.addFirst(u3);//添加第1个索引位置

        list.addLast(u4);//添加到最后一个索引位置,但是后面添加的元素将在该元素后面

        list.add(u5);

        

        System.out.println("linkedList的第一个元素: "+list.getFirst()+","+list.get(0));

        System.out.println("查看集合所有元素");

        for (Object ob : list) {

    System.out.println(ob);

    }

     

                //移除元素

        System.out.println("移除元素");

        list.removeLast();//移除最后一个元素

        for (Object ob : list) {

    System.out.println(ob);

        }

    5-Set集合

      存储的元素是无序的、不可重复的

     

      主要实现类:

               HashSet:可以添加null值,线程不安全

               LinkedHashSet:遍历时效率比较高

               TreeSet:存入的元素需要排序,按照指定的顺序遍历

     

    举例:

                    // set集合无序,不可重复

    Set set=new HashSet();

    set.add("呵呵");

    set.add("呵呵");

    set.add("cc");

    set.add("哈哈");

    System.out.println("集合大小:"+set.size());

     

    //如何获取集合元素?迭代set集合元素

    Iterator it=set.iterator();

     

    while(it.hasNext()){

    String s=(String)it.next();

    System.out.print(s+" ");

    }

      

    6-Map接口

     

      1)Map用于保存具有映射关系的数据(key-vlaue)。

        Mapkey不允许重复

        

        Map实现类:HashMapLinkedHashMap

        TreeMapHashtable(Properties)

      2)接口常用方法

       Object put(Object key, Object val)   以“键-值对”的方式进行存储

       Object get (Object key)              根据键返回相关联的值,如果不存在指定的键,返回null

       Object remove (Object key)           删除由指定的键映射的“键-值对”

       int size()                           返回元素个数

       Set keySet ()                        返回键的集合

       Collection values ()                 返回值的集合

       booleancontainsKey(Object key)       如果存在由指定的键映射的“键-值对”,返回true

     

    举例:

           //创建Map的实例

    Map<String,String> map=new HashMap<String,String>();

     

     

    //添加数据到map

    map.put("s001", "tom");

    map.put("s002", "lucy");

            map.put("s002", "lily");

            

            

            //mapkey不可重复

            System.out.println("map大小:"+map.size());

            

            

            //获取map中元素,需要强转

            String s2=(String)map.get("s002");

            System.out.println("获取map中元素:"+s2);

            

            

            //判断集合中是否存在某个key

            if (map.containsKey("s001")) {

    System.out.println("s001存在");

    }

             

            //判断集合中是否存在某个value

            if(map.containsValue("lily")){

             System.out.println("value:lily存在 ");

    }

            

            //获取key集合

            Set<String> set=map.keySet();

            System.out.println("循环打印key的集合");

            Iterator<String> it=set.iterator();

            while (it.hasNext()) {

    System.out.print(it.next()+" ");

     

    }

             

            //获取value集合

            System.out.println(" 循环打印value值的集合");

    Collection<String> values=map.values();//mapvalue的集合

    Iterator<String> it2=values.iterator();

    while(it2.hasNext()){

    System.out.print(it2.next()+" ");

    }

     

      3)Map遍历

      迭代器Iterator实现遍历

      增强性for循环

     

    7-泛型集合

      解决强制类型转换时容易出现的异常问题

      保证了数据的安全

      使用泛型不需要墙砖

     

    举例:

                    Map<String,User> map=new HashMap<String,User>();

    //添加

    map.put("u001",new User("admin","admin"));

    map.put("u002",new User("user","user"));

     

    //获取map中元素的键

    User u= (User)map.get("u002");

     

     

    //增强型for迭代key的集合

    for (String key:map.keySet()) {

    System.out.println("key="+key);

    System.out.println("value="+map.get(key));

    }

     

    //增强型for迭代value的集合

    for (User value:map.values()) {

    System.out.println(value);

    }

     

     

     

     

     

     

      举例:public static void main(String[] args) {

             HashMap<String, String> hmap=new HashMap<String, String>();

             hmap.put("1001", "学生A");

             hmap.put("1002", "学生B");

             hmap.put("1003", "学生C");

             Set<String> keySet=hmap.keySet();//获取键的集合

             Collection<String> values=hmap.values();//获取值的集合

             for(String sno:hmap.keySet()){

                System.out.println(hmap.get(sno));

     }

    }

  • 相关阅读:
    开源权限框架shiro 入门
    Struts1.2入门笔记
    memcache概述
    教你如何将中文转换成全拼
    WPF第一章(XAML前台标记语言(Chapter02代码讲解))
    WPF第一章(XAML前台标记语言)
    WPF简介
    Activity以singleTask模式启动,intent传值的解决办法
    linux下查看文件编码以及编码转换
    Fedora 17字体美化
  • 原文地址:https://www.cnblogs.com/-lyr/p/9639609.html
Copyright © 2011-2022 走看看