`
zxDawn
  • 浏览: 3857 次
社区版块
存档分类
最新评论

Java集合框架

    博客分类:
  • Java
阅读更多
集合框架:
collection 框架在软件包 java.util中,接口Collection<E>是Collection 层次结构中的根接口。接口 Collection<E>的已知子接口有List,Set等,已知实现类有ArrayList,LinkedList,Stack,Vector等。

一、以下为常见的:

  1)、接口 List <E> 有序的Collection。
     常用的List实现类有:ArrayList,LinkedList,Stack,Vector
      ArrayList:数组序列:有序的,可重复的,长度可变的,有下标的,地址连续的

     LinkedList:链表,链式序列,有序的,可重复的,长度可变的,有下标的,地址任意的,地址是任意的,各个数据之间通过引用关联
       
     Vector :向量,可以实现可增长的对象数组

     Stack :栈,后进先出的对象堆栈, 最先放入的数据在栈的底部,最后放的数据在栈的顶部,每次取数据都只能取到栈顶的数据,是Vector的子类

2)、集合 Set   无重复的Collection。
    常用的Set实现类有: HashSet,TreeSet
     HashSet:无序的,不可重复的,长度可变的
      TreeSet:不重复的,根据内容的自然顺序进行排序

3)、映射 Map<k,v>
    常用的Set实现类有:HashMap,TreeMap
        HashMap:k是一个HashSet
        TreeMap:k是一个TreeSet
    所有的K不能重复,每个K都对应一个Value,如果在加入数据的时候,出现相同的Key,则替换掉原有的Value



二、一些区别以及分别的使用场景:

   1)、 ArrayList与LinkedList

    ArrayList:在ArrayList中插入数据或删除数据时,需要将其后的所有数据相应的后移或者是前移,这样需要花费较多时间,效率比较低;而且此实现不是线程同步的。然而它的地址是连续的,一旦数据存储好了,查找效率比较高。
    LinkedList:因为它的地址是任意的,若要随机的访问某个数据,则必须从链表的一端一个一个元素的去查找,所以适合进行插入和删除操作,但是查询效率比较低。
    所以当要随机访问元素时,使用ArrayList,当要添加或删除数据时,使用LinkedList。

   2)、ArrayList与Vector
  
    Vector和ArrayList一样,都是大小可变数组的实现
    但当Vector或ArrayList中的元素超过它的初始大小时,Vector的容量会翻倍,而ArrayList只增加50%的大小
    ArrayList不支持线程同步,而 Vector是同步的
    所以在多线程中,一般采用Vector

  3)、HashSet与TreesSet

    HashSet:它不保证 set 的迭代顺序,特别是它不保证该顺序恒久不变,其中元素是不可重复的,不支持线程同步。
    TreeSet:使用元素的自然顺序对元素进行排序,元素是不可重复的,不支持线程同步。


代码示例:
  
import java.util.*;

public class Set {
public static void main(String[] args) {
  HashSet<String> hs=new HashSet<String>();
    hs.add("B");
hs.add("A");
hs.add("D");
hs.add("C");
for (String h : hs) {
System.out.print(h+" ");
}
System.out.println(" ");
TreeSet<String> ts = new TreeSet<String>();

ts.add("B");
ts.add("A");
ts.add("D");
ts.add("C");
for (String t : ts) {
System.out.print(t+" ");
}

}
}

结果如下:
  D A B C 
  A B C D

  4)、HashMap与TreeMap

    Hash:此类不保证映射的顺序,特别是它不保证该顺序恒久不变。不支持线程同步 。
    TreeMap:该映射根据其键的自然顺序进行排序,不支持线程同步。

代码如下:
import java.util.*;


public class HashMapDemo {

public static void main(String[] args) {

//创建一个HashMap对象
          HashMap<String,Integer> map = new HashMap<String,Integer>();
//存放数据
map.put("b",  90);
map.put("a", 100);
map.put("d", 50);
map.put("c", 10);
//如果存放相同的K,则替换掉这个K对应的Value
//map.put("韩国", 10);
//取出数据
//1.取得所有的k
Set<String> set = map.keySet();
//2.迭代Set
Iterator<String> iter = set.iterator();
System.out.println("HashMap:");
while(iter.hasNext()){
//取得一个K
String key = iter.next();
//根据K获得Value
int value = map.get(key);
System.out.print(key+" "+value+"   ");
}


  TreeMap<String,Integer> tm=new TreeMap<String,Integer>();
    tm.put("b",  90);
tm.put("a", 100);
tm.put("d", 50);
tm.put("c", 10);
Set<String> set1 = tm.keySet();
//2.迭代Set
Iterator<String> iter1 = set1.iterator();
System.out.println("\nTreeMap:");
while(iter1.hasNext()){
//取得一个K
String key1 = iter1.next();
//根据K获得Value
int value1 = tm.get(key1);
System.out.print(key1+" "+value1+"   ");

}
}

}

结果如下:
HashMap:
d 50   b 90   c 10   a 100  
TreeMap:
a 100   b 90   c 10   d 50  
1
2
分享到:
评论
1 楼 然并卵-277 2015-11-12  
写的真好!

相关推荐

    【Java】Java集合框架思维导图。

    xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...

    Java集合框架总结

    Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结Java集合框架总结

    Java集合框架详解

    Java集合框架详解Java集合框架详解Java集合框架详解

    java集合框架图

    java集合框架图java集合框架图java集合框架图java集合框架图java集合框架图

    java集合框架面试题

    内含大量java集合框架方面常被面试官问到的经典面试题。

    Java集合框架.ppt

    集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中

    JAVA集合框架学习总结

    本文档为本人学习 java 集合框架期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!

    6.java集合框架.zip

    6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6....

    JAVA学习 Java集合框架.ppt

    JAVA学习 Java集合框架.ppt

    Java集合框架学习笔记

    学习Java集合框架的讲义、笔记,希望大家多提意见。时间关系没有Collections,Arrays的内容,以后补上!

    数据结构和Java集合框架 英文版

    学生通过学习方法描述和应用,可以逐步理解并有效地使用数据结构,还可以了解这些数据结构的多种实现,包括在Java集合框架中提供的一些实现。 本书内容非常丰富,且在每章章尾提供编程项目,以帮助学生提高实践能力...

    java 集合框架

    Java集合框架,set、list接口及其子集,接口的继承关系

    Java集合框架使用总结

    Java集合框架使用总结 前言: 本文是对Java集合框架做了一个概括性的解说,目的是对Java集合框架体系有个总体认识,如果你想学习具体的接口和类的使用方法,请参看Java API文档。 一、概述 数据结构对程序设计...

    Java集合框架常见面试题夜间阅读版.pdf

    java集合框架

    一个扑克游戏,用于Java集合框架练习.zip

    一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合...

    java集合框架笔记

    List set ArraryList Map java集合框架笔记 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用

    数据结构和Java集合框架

    数据结构和Java集合框架,国外经典教材,开发必备

    Java集合框架常见面试题.pdf

    Java集合框架常见面试题.pdf

    Java集合框架.pdf

    Java集合框架概述 Java集合框架是一个抽象数据类型的框架,它提供了一组接口和类,可用于处理各种类型的数据结构,如列表、队列、集、映射等。 Java集合框架的主要特点是: 1、可扩展性:Java集合框架提供了一组可...

Global site tag (gtag.js) - Google Analytics