zoukankan      html  css  js  c++  java
  • 2016/04/19

    package com.wode.test;

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeSet;

    /**
     *
     * @author Administrator
     *集合框架
     */
    public class Test04_19 {

     public static void main(String[] args) {
      /*集合:也就是数据的集合
      特点:元素类型可以不同,集合长度可变,空间也是不固定的
      JCF 集合框架  他提供了用于管理集合的接口和类
      java 中对一些数据结构和算法进行了封装即集合,也是一种对象
      Collection 包含List 接口和set接口*/

    //----------------------------------------分了个线---------------------------------------
      
      //List接口:一列数据,数据的内容可以重复,以元素安插来放置元素,不会从新排序
      //List接口的常用实现包括ArrayList 和 LinkedList类
      List list = new ArrayList();//实例化一个ArrayList() 对象
      list.add("a");
      list.add("b");
      list.add("c");//使用ArrayList 中的add方法 在框架的结尾加上元素
      System.out.println(list);
      System.out.println(list.size());//size 方法查询长度
      System.out.println(list.get(0));//get 方法查询下标所对应的元素
      list.set(0, "a被改变了");//set 方法改变下标相对应的元素
      System.out.println(list.toString());
      list.remove(1);//remove 方法 删除下标相对的元素
      System.out.println(list.toString());
      /*LinkedList类和ArrayList 相似其方法也相似  其两者的区别为:
      ArrayList:使用广泛,在频繁操作增删改的适合不适用,最适合查询
      LinkedList:适合频繁的操作的时候使用
      ☆重点:
      Vector:他与ArrayList相似  其方法也相似,而且他的线程安全,但性能低于ArrayList*/

    //----------------------------------------分了个线---------------------------------------
     
     /*泛型:
        为什么需要泛型:集合元素没有任何的限制,这样可能会引发一些问题。
          例如:如果我们想创建一个只能保存Student类的集合,但是别人一样
          可以吧一个Integer 类型的对象放进去,所以可能引发异常。
       所谓泛型:就是允许在定义类、接口指定类型形式参数,这个类型形式参数
       将在声明变量、创建对象时确定(即传入的实际参数)
       总之:泛型代表一种约束  */
      
      List <Integer> list2 = new LinkedList<>();//后面的<>里可以不填 因为前面已经限制
      //实例化了一个LinkedList 对象,并用一个List类型的引用变量list2指向他
      //其中的<>里的 就是泛型 规定为 Integer 类型 如果放入其他类型在编译的时候就会报错
     
    //----------------------------------------分了个线---------------------------------------
      
      /*Iterator :
      Iterator接口是一种用于遍历集合的接口。所谓遍历,是指从集合中取出每一个元素的过程。
      Iterator(也叫"迭代器"):对Collection进行迭代的"迭代器"*/
      Iterator it = list.iterator();//迭代器的模型
      while(it.hasNext()){//hasNext 有无元素是否可以迭代 是返回true
       System.out.println(it.next());//next 返回集合里的下一个元素
      }
      
    //----------------------------------------分了个线---------------------------------------
      
     /* Set接口:一列数据,但是他的数据不能重复,他使用自己内部的排列机制来放置元素
      Set接口的常用实现包括了HashSet类和TreeSet类
      HashSet:使用频繁,但是他不能加重复的数据。(通过哈希码值来判断,
      因为每一个对象的哈希码值都不一样)而且他会自动的排序(次排序并不是
      使用字典顺序来排序)
      TreeSet:速度慢,因为他要排序(字典排序)
      ☆重点:
      List是有序的而Set是无序的:这里的有序并是指元素插入的顺序,与字典
      顺序无关。*/
      Set<String> set = new HashSet<>();
      set.add("c");
      set.add("b");
      set.add("a");
      Set<String> set1 = new TreeSet<>();
      set1.add("c");
      set1.add("b");
      set1.add("a");
      set1.add("e");
      System.out.println(set);//HashSet 会按照他内部的排序  并不是以字典形式排序
      System.out.println(set1);//TreeSet 会以字典形式排序  但是他速度慢
      System.out.println(set.size());
      System.out.println(set1.size());//HashSet TreeSet 都有size 方法
      System.out.println(set.contains("b"));
      System.out.println(set1.contains("f"));//contains 方法如果此 set 包含指定元素,则返回 true。
      System.out.println(set.isEmpty());
      System.out.println(set1.isEmpty());//isEmpty  方法如果此 set 不包含任何元素,则返回 true。
      set.clear();// clear 方法 从此 set 中移除所有元素。
      //总之  ArrayList 和 LinkedList类 有的方法  HashSet类和TreeSet类  都有
      
    //----------------------------------------分了个线---------------------------------------
      
      /*Map接口:是Java集合框架不同于Collection接口的另一种重要接口,他对应的是种从键(Key)到值(Value)
      的对应关系的集合。Key和Value 可以是任何引用类型的数据。Key不能重复但是Value可以重复。
      在Map接口里有两个类分别为: HashMap类和TreeMap类    常用的是HashMap类 TreeMap类中的基本方法和HashMap相似*/
      
      Map<String, String> map = new HashMap<>();
      map.put("xg", "西瓜");
      map.put("pg", "苹果");
      map.put("cm", "草莓");//put 方法 是在尾部加上 元素
      map.put("xg", "西瓜");//Key重复的两个 元素 并不能增加 所打印的也就只有三个元素
      System.out.println(map);
      System.out.println(map.hashCode());
      System.out.println(map.isEmpty());//isEmpty   如果此映射不包含键-值映射关系,则返回 true。
      System.out.println(map.keySet());//keySet  方法返回此映射中所包含的Key键的 Set 视图。
      map.remove("cm");//remove 方法  从此映射中移除指定Key键的映射关系(如果存在)。
      System.out.println(map);
     }
    }

  • 相关阅读:
    Codeforces Round #113 (Div. 2) Tetrahedron(滚动DP)
    Codeforces Round #300 Quasi Binary(DP)
    Codeforces Round #119 (Div. 2) Cut Ribbon(DP)
    Codeforces Round #260 (Div. 1) Boredom(DP)
    Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Cards Sorting(树状数组)
    Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Office Keys(思维)
    图灵杯 E 简单的RMQ(UVA 11235)(RMQ)
    qwb与学姐 (带秩并查集)
    计蒜客 UCloud 的安全秘钥(困难)(哈希)
    第八届山东省ACM大学生程序设计竞赛个人总结
  • 原文地址:https://www.cnblogs.com/chenyangpeng/p/5409874.html
Copyright © 2011-2022 走看看