• 5、数组和集合--Collection、Map


    一、数组:同一个类型数据的集合,其实他也是一个容器

      1、数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些数据

      2、数组的定义:

          在Java中常见:

            格式1:  类型 [] 数组名 = new 类型[数组长度或数组元素的个数];    例如:  int [] dada = new int[3];

            格式2:  类型 [] 数组名 = new 类型[]{值1,值2,值3……};          例如:  int [] data = new int{1,2,3,……};

          和上边的意思一模一样,更符合用用过C语言编程的程序员的编程习惯:

             格式1:  类型  数组名 [] = new 类型[数组长度或数组元素的个数];    例如:  int dada [] = new int[3];

             格式2:  类型  数组名 [] = new 类型[]{值1,值2,值3……};          例如:  int data [] = new int{1,2,3,……};

      3、数组的遍历方式:通过属性length获取该数组的元素个数。

                 使用方式:  数组名称.length

                例如:

                public static void main(String[] args) {
                  int data[] = new int[3];
                  for(int i=0;i<data.length;i++)
                      data[i]=i;
                  for(int i=0;i<data.length;i++)
                  System.out.println("数组data的第"+i+"个数字为"+data[i]);
                }
    
                输出结果为:
    
                    数组data的第0个数字为0
                    数组data的第1个数字为1
                    数组data的第2个数字为2

    二、集合-Collection: 分为List、Set两种。

      1、List:元素是有序的,元素可以重复,因为该集合体有索引

        a)、ArrayList:底层数据结构使用的数据结构。特点是:查询速度快,增删速度慢,线程不同步。

        b)、LinkedList:底层使用的链表数据结构。特点查询速度慢,增删速度快,线程不同步。

        c)、Vector:底层数据结构,线程同步。

      2、Set:元素是无序的,元素不可以重复。

        a)、HashSet:d

        b)、TreeSet:可以set集合中的元素进行排序,线程不同步。

    三、集合-Map

      1、Map:存储键值对

        a)、HashMap:底层是哈希表数据结构,可以存入null作为键或值,线程不同步

        b)、HashTable:底层是哈希表数据结构,不可以存入null作为键或值,线程同步。

        c)、TreeMap:底层是二叉树结构,线程不同步。

    四、泛型:用于解决安全问题,是一个类型安全机制。

        泛型在集合框架中很常见,只要见到<>就要定义泛型

        当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可

    五、遍历:即查询集合中的所有元素。

      1、利用size()和get()方法获取。因为List是有序的,所以可以用这种分方法来遍历。

    @Test
    public void Test(){
        List<String> list = new ArrayList<String>();
        list.add("DDDDD");
        list.add("EEEEE");
        list.add("FFFFF");
        print(list);
        //因为list有顺序,利用size()和get()方法获取
        for (int i = 0; i < list.size(); i++) {
          System.out.println(list.get(i));
        }
    } 

      2、利用Iterator迭代器进行遍历

    @Test
    public void test(){
         List list = new LinkedList();
         list.add("123");
         list.add("456");
         Iterator<String> it = list.iterator();
         while (it.hasNext()) {
           System.out.println(it.next());
        }
    }

      3、增强for循环

    @Test
    public void test(){
         List list = new LinkedList();
         list.add("123");
         list.add("456");
         for(List a :  list)
           System.out.println(a);      
    }

      4、对于Map的遍历方式

    @Test
    public void test() {   
        Map<String,String> map = new TreeMap<String, String>();
        map.put("Jerry", "10000");
        map.put("shellway", "20000");
        map.put("Kizi", "30000");
        print(map.entrySet());
        //Map的第一种遍历方式:先获得key的集合,再获得值value
        Set<String> sett = map.keySet();
        for (String s : sett) {
          System.out.println(s+":"+map.get(s));
        }
        //Map的第二种遍历方式:获得键值对
        for (Map.Entry<String, String> entry : map.entrySet()) {
          System.out.println(entry.getKey()+" : "+entry.getValue());
        }
    }

    五、集合和数组的区别:

      1、数组长度是不变的,集合长度是可变的。

      2、数组存储相同的类型对象,集合可以存储不同类型的对象。

                

  • 相关阅读:
    spring 注解验证@NotNull等使用方法
    CyclicBarrier 是什么?怎么用?
    多线程
    线程8锁
    java8 CompletableFuture 用法全解
    阻塞队列,有界队列,无界队列
    ArrayBlockingQueue讲解及源码解析
    多线程中使用静态方法存在线程安全的问题
    什么是函数式接口?
    js高级闭包的理解及应用
  • 原文地址:https://www.cnblogs.com/czj-zhm/p/5837150.html
Copyright © 2020-2023  润新知