首页 技术 正文
技术 2022年11月9日
0 收藏 841 点赞 3,418 浏览 2055 个字

java集合框架详解

  一、Collection和Collections直接的区别

    Collection是在java.util包下面的接口,是集合框架层次的父接口。常用的继承该接口的有list和set。可以对集合元素进行插入、删除、判断一个元素是否其成员、遍历等操作

    Collections是java.util包下面的工具类、提供了关于集合中查找、排序、替换、线程安全化等操作

  二、list接口

    ArrayList:底层结构是数组、查询快、插入和删除慢、非线程安全的 当数组超出初始容量就会扩容按照50%扩容

    linkedList:底层结构是链表、查询慢、插入和删除快、非线程安全的

Vector:底层结构是数组、线程安全的、无论插入还是查询都特别慢 按照数组的100%延长

  三、set接口

    数据结构:数据的存储方式

    set中的方法和Collection中的方法是一致的,set接口中取出的方式只有一种。迭代器

    HashSet:底层数组结构是哈希表,线程是不同步的、无序的、高效的

      HashSet保证元素的唯一性;通过元素的hashCode和equals方法完成

      当元素的hashcode值相同时,才继续判断元素的equals是否为true

      如何为true则视为相同元素,不存。如果为false,那么存值

      如果hashcode值不同,那么不判断equals,从而提高对象的比较速度

    LinkedHashSet 有序,hashset的子类

      TreeSet 对set集合中的元素进行指定顺序的排序,不同步。TreeSet底层数据结构就是二叉树

    对于ArrayList集合,判断元素是否存在,或者删除元素,底层的依据都是equals\

    对于HashSet集合,判断元素是否存在,或者删除元素,底层依据的是hashcode()方法和equals()方法

  三、Map接口

    HashTable:底层是哈希表数据结构,是线程同步的。不可以存储null建和null值

    HashMap:底层是哈希表数据结构,是线程不同步的,可以存储null建和null值,替代了hashTable

    Treemap:底层是二叉树结构,可以对Map中的建进行指定顺序的排序 

    

    Map集合存储和Collection集合有很大的不同

     Collection一次存一个元素,而Map一次存一对元素

    Collection是单列元素,而Map是双列元素

    Map中存储的一对元素:一个是键一个是值。键和值直接有对应(映射)关系

    特点:要保证Map中键值的唯一性

   想要取Map中所有的元素

    原理:Map中没有迭代器,Collection具备迭代器,只要将Map集合转成set集合,就可以使用迭代器了。之所以转成set,是因为Map结婚具备键的唯一性。其实set集合就是来自Map,set集合底层其实用的就是Map方法

    把Map转化成set的方法有两种

    map.keySet()和 map.entrySet();

    Entry就是Map接口中的内部接口

    为什么要定义在Map的内部呢,Entry是访问键值关系的入口,是map的入口。访问的是map中的建值对。

    

package com.spring.test;import java.io.*;
import java.util.*;/**
* Created by Administrator on 2018/2/28.
*/
public class TestTransient {
public static void main(String[] args) {
HashMap<String,Integer> map = new HashMap<String, Integer>();
map.put("张三",10);
map.put("李四",20); //把map转化成set集合
Set sest1 = map.keySet();
Iterator it = sest1.iterator();
while (it.hasNext()){
System.out.println("输出值"+it.next());
} Set entrySet = map.entrySet();
Iterator it2 = entrySet.iterator();
while (it2.hasNext()){
Map.Entry entry = (Map.Entry)it2.next();
System.out.println("键是="+entry.getKey()+"键对应的值是="+entry.getValue());
} }
}

将非同步集合转化成同步集合的方法

  List synchronizedList(List)

  map synchronizedMap(Map)

  原理:就是定义一个类,将集合所有的方法加同一把锁,然后返回

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,905
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,430
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,247
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,058
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,690
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,727