Java 集合

来源:互联网 发布:淘宝联盟好还是一淘 编辑:程序博客网 时间:2024/05/21 05:43

集合:collection(动态数组) 、map和数组的不同:

* Array数组。 String[] Strings = new String[6];1、存储内容有区别,数组可以存基本类型和对象类型,而集合只能存储对象。2、数组有长度限制,固定大小的数组。集合没有长度限制,大小不固定。3、数组的存储结构是存储单个数据。map可以存储key-value 键值对。形成映射关联结构。

collection 集合

1、集合大小获取使用 list.size()2、集合对象获取 list.get(0) //获取集合中第一个元素3、数组转化为集合 Arrays.asList(students) //students是数组4、集合转化为数组   Student[] students2 = (Student[]) sList.toArray(new Student[sList.size()]);5、集合中天机元素  sList.add()

泛型。1.5之前集合存储的数据会自动强转为OBiect类型,这样就发生了类型丢失,造成访问安全。jdk1.5后新特性,解决集合容器数据安全问题,主要原理是在类声明时 通过标识表示类中的具体对象类型。

    List<Student> list //说明容器list中存储学生类型对象Student类型对象

Iterator迭代器,主要用于遍历集合。

    Iterator<Student> it = sList.iterator();//将集合转化为迭代器    while (it.hasNext()) {//判断是否存在下一个元素        Student st = it.next();//返回下一个元素        st.info();    }

foreach 增强型for循环 迭代容器数据

    for(类型 变量:要迭代的容器){            变量操作        }

ArrayList类型

1、构建 new 2、添加 add(元素)3、删除 remove (索引)4、更新 (索引 元素)

LinkedList对于堆栈和链表结构有对应的实现,所以自身包含新方法。

1、堆栈结构就是典型的 FILO 先进后出结构2、入栈(压栈)方法 push3、出栈(弹栈)方法 pop

ArrayList适用于查询和循环遍历,速度很快,LinkedList适用于插入和删除,速度很快。

ArrayList和Vector的区别

1、两者都是通过数组实现的,不同的是Vector支持线程同步,同一时刻只能支持一个线程访问,他是线程安全的。避免了多线程并发并访问时的数据不一致问题(脏读写)。但是同步花费代价太高,因此比ArrayList效率低,所以基本不再使用。

Set集合接口是Collection接口的子类,不允许存储相同对象,如果添加相同对象,则添加失败。

特点:    1、不保证数据存储的有序性(就是无序的)    2、非线程安全    3、可以添加null到集合
Set判断两个对象是否相等,不是使用==比较,而是使用equals 方法判断。
自定义对象判断相等,需要重写hashCode()和equals()方法
集合框架(map集合的功能概述)双列 存储 key-value 主要实现类HashMap
map集合特性:key值不允许重复储存。可以将null作为key和value来用,无序存储。
* a:添加功能    * V put(K key,V value):添加元素。    * 如果键是第一次存储,就直接存储元素,返回null    * 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值* b:删除功能    * void clear():移除所有的键值对元素    * V remove(Object key):根据键删除键值对元素,并把值返回* c:判断功能    * boolean containsKey(Object key):判断集合是否包含指定的键    * boolean containsValue(Object value):判断集合是否包含指定的值    * boolean isEmpty():判断集合是否为空* d:获取功能    * Set<Map.Entry<K,V>> entrySet():    * V get(Object key):根据键获取值    * Set<K> keySet():获取集合中所有键的集合    * Collection<V> values():获取集合中所有值的集合* e:长度功能    * int size():返回集合中的键值对的个数

3_集合框架(Map集合的遍历之键找值)

  • A:键找值思路:
    • 获取所有键的集合
    • 遍历键的集合,获取到每一个键
    • 根据键找值
  • B:案例演示

    • Map集合的遍历之键找值

      HashMap<String, Integer> hm = new HashMap<>();hm.put("张三", 23);hm.put("李四", 24);hm.put("王五", 25);hm.put("赵六", 26);/*Set<String> keySet = hm.keySet();         //获取集合中所有的键Iterator<String> it = keySet.iterator();    //获取迭代器while(it.hasNext()) {                       //判断单列集合中是否有元素    String key = it.next();                 //获取集合中的每一个元素,其实就是双列集合中的键    Integer value = hm.get(key);            //根据键获取值    System.out.println(key + "=" + value);  //打印键值对}*/for(String key : hm.keySet()) {             //增强for循环迭代双列集合第一种方式    System.out.println(key + "=" + hm.get(key));}
原创粉丝点击