一、List接口,有序的Collection接口,能够精确地控制每个元素插入的位置,允许有相同的元素

1.链表,LinkedList实现了List接口,允许null元素,提供了get()、remove()、insert()方法,没有同步方法

  1. public void add() {
  2. LinkedList List = new LinkedList();
  3. List.add("link1");
  4. List.add("link2");
  5. List.add("link3");
  6. Iterator it = List.iterator();
  7. while (it.hasNext()) {
  8. System.out.println(it.next());
  9. }
  10. it.remove();
  11. Iterator it1 = List.iterator();
  12. for (int i = 0; i < List.size(); i++) {
  13. System.out.println(it1.next());
  14. }
  15. }

2.数组列表,ArrayList,可以动态变化容量的数组,非同步的

数组列表中存放的是Object类型,因此在数组列表中存放的对象类型,以其原型的父类代替,提取其中的元素时要进行类型转换

  1. public static void main(String[] args)
  2. {
  3. ArrayList al=new ArrayList();
  4. al.add("name");
  5. al.add("value");
  6. al.add("number");
  7. for(int i=0;i<al.size();i++)
  8. {
  9. System.out.println(al.get(i));
  10. }
  11. }

二、Set接口,不包含重复元素的Collection接口
1.散列集,HashSet,实现了Set接口,非线性同步
与链表和数组列表几乎类似,但在数据处理时,比使用链表进行数据处理花费时间更短,处理大数据时通常使用散列集

  1. public static void main(String[] args)
  2. {
  3. long time=0;
  4. HashSet hs=new HashSet();
  5. ArrayList al=new ArrayList();
  6. long starttime=System.currentTimeMillis();
  7. for(int i=0;i<10000;i++)
  8. {
  9. hs.add(new Integer(i));
  10. }
  11. System.out.println(System.currentTimeMillis()-starttime);
  12. for(int i=0;i<10000;i++)
  13. {
  14. al.add(new Integer(i));
  15. }
  16. System.out.println(System.currentTimeMillis()-starttime);
  17. }

2.树集,TreeSet,实现了Set接口,实现了排序功能,该集合中的元素默认按升序排列元素
使用树集数据结构的对象,需要实现Comparable接口,树集输出的数据都是经过排序的

三、Map接口,没有继承Collection接口,其提供key到value的映射,Map中不能包含相同的key,每个key只能映射一个value。
1.散列表类,HashTable,继承了Map接口,非空(non-null)的对象都可作为key或value,是同步的
添加数据:put(key,value);
取出数据:get(key);
特点:无序的,因此可以快速查找特定的元素

  1. public static void TableTest(){
  2. Hashtable ht = new Hashtable();
  3. ht.put("key1", "value1");
  4. ht.put("key2", "value2");
  5. String value1=(String)ht.get("key2");
  6. System.out.println(value1);
  7. }

构造函数:Hashtable(),初始容量11,负载因子0.75,即散列表中已经有75%的位置被放满,则进行再散列。
负载因子越高(越接近1),则内存使用率越高,元素的寻找时间越长,反之,则内存浪费越多,寻找时间越短
key的对象将通过计算散函数确定与之对应的value位置 ,因此key的对象需要实现hashCode()和equals()方法。
两个对象相同,则它们的hashCode必须相同;两个对象不同,则它们的hashCode不一定不同。
冲突:不同对象的hashCode相同,则称为冲突,冲突将导致操作散列表的时间开销增大。因此要同时复写equals()和hashCode()方法
2.散列映射类,HashMap,与HashTable类似,不是HashMap是非同步的,且允许null

  1. public static void Maptest(){
  2. Map<string string=""> map=new HashMap<string string="">();
  3. map.put("key1", "value1");
  4. map.put("key2", "value2");
  5. map.put("key3", "value3");
  6. for(Map.Entry<string string=""> entry:map.entrySet()){
  7. System.out.println(entry.getKey());
  8. System.out.println(entry.getValue());
  9. }
  10. String value1=(String)map.get("key1");
  11. System.out.println(value1);
  12. }
  13. </string></string></string>

3.树映像,TreeMap,输出的数据按照关键字排序了

【转】http://blog.csdn.net/hunterno4/article/details/9750577

java数据结构整理(二)的更多相关文章

  1. Java数据结构整理(一)

    ava数据结构内容整理关键字: 数据结构 Collection:List.SetMap:HashMap.HashTable如何在它们之间选择一.Array , ArraysJava所有“存储及随机访问 ...

  2. java:数据结构(二)栈的应用(括号匹配)

    一.什么是括号匹配: 括号匹配就是利用计算机辨别表达式里面的括号是否书写成功 例如: {()((a)) }这就是一个正确 (()()   这就是一个错误的 二.括号匹配的算法: 众所周知,括号分为花括 ...

  3. 自己动手实现java数据结构(二) 链表

    1.链表介绍 前面我们已经介绍了向量,向量是基于数组进行数据存储的线性表.今天,要介绍的是线性表的另一种实现方式---链表. 链表和向量都是线性表,从使用者的角度上依然被视为一个线性的列表结构.但是, ...

  4. java:数据结构(二)栈的应用(进制转换全收集)

    说到进制转换,java已经封装了基本的方法,在竞赛中使用封装的方法自然能节省大量时间 另一位仁兄介绍的封装好的方法: https://blog.csdn.net/m0_37961948/article ...

  5. java 数据结构(二):java常用类 二 StringBuffer、StringBuilder

    1.String.StringBuffer.StringBuilder三者的对比String:不可变的字符序列:底层使用char[]存储StringBuffer:可变的字符序列:线程安全的,效率低:底 ...

  6. 【算法与数据结构】二叉搜索树的Java实现

    为了更加深入了解二叉搜索树,博主自己用Java写了个二叉搜索树,有兴趣的同学可以一起探讨探讨. 首先,二叉搜索树是啥?它有什么用呢? 二叉搜索树, 也称二叉排序树,它的每个节点的数据结构为1个父节点指 ...

  7. 自己动手实现java数据结构(六)二叉搜索树

    1.二叉搜索树介绍 前面我们已经介绍过了向量和链表.有序向量可以以二分查找的方式高效的查找特定元素,而缺点是插入删除的效率较低(需要整体移动内部元素):链表的优点在于插入,删除元素时效率较高,但由于不 ...

  8. 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现

      本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型   栈是 ...

  9. Java数据结构和算法(二)顺序存储的树结构

    Java数据结构和算法(二)顺序存储的树结构 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 二叉树也可以用数组存储,可以和完 ...

随机推荐

  1. awk 数组排序-- asort 与 asorti

    两者排序区别: asort 是对数组的值进行排序,并且会丢掉原先键值: asorti是对数组的下标进行排序. 数据文件: 12 34 78 90 23 45 1. awk是关联数组.for-in循环输 ...

  2. eclipse myeclipse修改工作区间 an error has occurred. see error log for more details. java.lang.nullpointerexception 问题解决

    解决办法:修改项目工作空间. 修改工作空间,以前打开myEclipse时知道怎么改!现在只有找配置文件了! 步骤: MyEclipse 5.1.1 GA----->Eclipse-----> ...

  3. tcp 重组原理

    原文: http://blog.chinaunix.net/uid-21768364-id-4823449.html 1 .引言TCP/IP 协议现在已经广泛的被应用.数据在网络上应用 TCP/IP ...

  4. Vacations

    Vacations Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasya ...

  5. 我的android学习脚步----------- 的第一个应用

    刚刚开始学android开发,以前都是在别人调好的应用中修改JNI,现在需要自己一步步走 开发环境:Eclipse+ADT 配置不多讲了,引自:http://www.cnblogs.com/allen ...

  6. memory runs at single channel问题解决

    memory runs at single channel 解决方案:开机后按DEL ,然后进入BIOS 选择第一项,回车! advanced下面的有个momori什么什么的,选择disable. m ...

  7. 自动获取访客QQ

    http://jerring.cn/bizqq/index.html http://www.oicqzone.com/qqjiqiao/2015072322139.html

  8. 基于I2C EPPRPM(AT24C02B) + LCD12864实验

    本次实验目的:在指定的EPPROM地址中,写入一数据,延时100MS后,在从该地址中读取,并在LCD上显示. 该实验在前两天就开始做了,一开始并没有成功,读出的一直0x00,当时也调了一会,但跳回到P ...

  9. php正则表达式手册

    (http://deerchao.net/tutorials/regex/regex.htm)转载:作者:deerchao php的正则表达式很强大,学好了的确有很大的用处,但是正则表达式的规则很繁琐 ...

  10. Education Round16

    A题:题意:给定国际象棋king的坐标,求能向几个方向移动分析:处理一下边界情况,其他的都是8 #include <iostream> #include <cstdio> #i ...