zoukankan      html  css  js  c++  java
  • JAVA集合框架

    JAVA集合框架:

    数组的局限性:数组长度一旦确定,将不能随意扩展。一个系统如果要存储的数据的长度是不确定的,那么使用数组来存储就不方便了,此时可以选择使用集合这种数据存储结构。

    Iterable--Collection
           --List(有序不唯一,允许元素为null)
                ArrayList
                LinkedList
           --Set(无序的唯一)
    

    ArrayList特点:

    这个集合它的存储结构和数组类似,被称做动态数组(长度可动态扩展的数组),在内存中分配连续的存储空间。

    遍历元素和随机访问元素的效率比较高,而添加和删除元素的效率比较低。

    添加和插入元素

    public class ArrayListTest1 {
        public static void main(String[] args) {
            ArrayList list=new ArrayList();
            list.add("tom");
            list.add("mary");
            list.add("kitty");
            list.add("jerry");
    
            //遍历集合
            for(int i=0;i<list.size();i++) {
                //获得集合元素
                String s=(String)list.get(i);
                System.out.print(s+"	");
            }
            list.add("vivi");
    
            System.out.println("
    元素的个数:"+list.size());
            //插入
            list.add(0, "apple");
            System.out.println("=================");
            //遍历集合
            for(int i=0;i<list.size();i++) {
                        //获得集合元素
                        String s=(String)list.get(i);
                        System.out.print(s+"	");
            }
        }
    }
    

    删除元素

    public class ArrayListTest2 {
    
        public static void main(String[] args) {
            ArrayList list=new ArrayList();
            list.add("tom");
            list.add("jack");
            list.add("mary");
            list.add("lily");
    
            for(int i=0;i<list.size();i++) {
                String name=(String)list.get(i);
                System.out.println(name);
            }
            //删除元素
            //判断一下要删除的元素是否存在
            if(list.contains("mary")) {
                list.remove("mary");
                if(!list.contains("mary")) {
                    System.out.println("删除成功!");
                    System.out.println("==================");
                    for(int i=0;i<list.size();i++) {
                        String name=(String)list.get(i);
                        System.out.println(name);
                    }
                }
            }else {
                System.out.println("要删除的元素不存在");
            }
        }
    }
    

    LinkedList

    是以链表的方式来保存数据元素的

    因为这种存储结构使得Linkedlist在插入元素和删除元素时效率会比较高,而遍历元素时效率会比较低。

    Linkedlist提供了在集合的首尾查看添加删除元素的一些方法。

    public class LinkedListTest1 {
        public static void main(String[] args) {
            LinkedList list=new LinkedList();
            list.add("tom");
            list.add("jerry");
            list.add("kiity");
            for(int i=0;i<list.size();i++) {
                System.out.println((String)list.get(i));
            }
            list.addFirst("mary");
            list.addLast("vivi");
            System.out.println("====================");
            for(int i=0;i<list.size();i++) {
                System.out.println((String)list.get(i));
            }
    
            System.out.println("第一个元素:"+list.getFirst().toString());
            System.out.println("最后一个元素:"+list.getLast().toString());
    
            list.removeFirst();
            list.removeLast();
            System.out.println("========================");
            for(int i=0;i<list.size();i++) {
                System.out.println((String)list.get(i));
            }
        }
    }
    

    面试题:

    1. 总结ArrayList和LinkedList的异同

    2. Vector和ArrayList的异同?

    Vector和ArrayList一样都是长度可变的动态数组。所不同的是Vector是JDK1.0推出的集合,是线程同步的,ArrayList是JDK1.2推出的,没有实现线程同步,所以的Vector的效率低,线程安全,ArrayList线程非安全,效率高。

    泛型集合:

    在jdk1.5时推出了泛型集合,在泛型集合出现前,集合中数据的类型是不能控制,在一个集合中可以添加不同数据类型的元素,这样会给集合元素的访问带来安全隐患,极容易引发ClassCastException。泛型集合出现后,集合中添加的元素可以通过参数来进行控制,也就是类型参数化,避免访问集合元素时的拆箱操作,减少了判断逻辑,降低了安全隐患。 Java中每一种集合都支持泛型。

    public class ArrayListTest8 {
    
        public static void main(String[] args) {
            ArrayList<Student> students=new ArrayList<>();
            Student s1=new Student("tom",19,"男");
            Student s2=new Student("jerry",20,"男");
            Teacher t1=new Teacher("mary","java");
    
            students.add(s1);
            students.add(s2);
            //students.add(t1);
            for(int i=0;i<students.size();i++) {
                Student s=students.get(i);
                System.out.println("name:"+s.name+"age:"+s.age+"gender:"+s.gender);
            }
        }
    }
    
  • 相关阅读:
    Coursera 机器学习笔记(八)
    Coursera 机器学习笔记(七)
    Coursera 机器学习笔记(六)
    Coursera 机器学习笔记(五)
    Coursera 机器学习笔记(四)
    埃拉托斯特尼筛法
    Floyd判圈算法
    多数投票算法
    Coursera 机器学习笔记(三)
    Coursera 机器学习笔记(二)
  • 原文地址:https://www.cnblogs.com/mxybk/p/11323337.html
Copyright © 2011-2022 走看看