- 浏览: 264019 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
saishangxue123:
文章写的清楚、明了,一气呵成,支持
什么是反射、反射能干什么、如何使用反射? -
allen3010:
1,2,3,4,5这六个数字。。。。。
用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列
集合类Collection
List表示有先后顺序的集合,父类为Collection,有add()、get()等方法
Collection有List、Set子类,注意:Map不是Collection的子类
*********************************************************************
ArrayList
ArrayList是用数组的方式存储的,其存储空间要大于实际存储的元素数,便于增加和插入元素,也能够直接按序号索引元素,但是插入元素时涉及到数组元素移动量大的问题,——索引数据块块而插入慢。
*********************************************************************
Vector
Vector是用数组的方式存储的,使用了synchronized方法(线程安全),其他ArrayList一样。
*********************************************************************
ArrayList、Vector和Set的比较:
都实现了List接口(List接口是继承Collection接口的),都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于动态的数组,以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是和HashSet之类的最大的不同点,HashSet不可以按索引号去检索其中的元素的,也不允许元素的重复。
*********************************************************************
Map:存放一键值对
HashMap:新的类,异步处理,非线程安全,允许有null
Hashtable:旧的类,同步处理,线程安全,不允许有null
TreeMap:有序排列,按key排序
*********************************************************************
Iterator:
迭代输出,依靠Collection接口中的iterator方法输出,是新的输出标准
Enumeration:旧的输出标准
*********************************************************************
LinkedList
LinkedList是用双向链表的方式存储的,按序号索引数据需要进行向前或者向后遍历,但是插入数据时只需记录本项的前后项即可,所以插入块。
*********************************************************************
Set
TreeSet的底层实现是采用红-黑树的数据结构,采用这种结构可以从Set中获取有序的序列,但是前提条件是:元素必须实现Comparable接口,该接口中只用一个方法,就是compareTo()方法。当往Set中插入一个新的元素的时候,首先会遍历Set中已经存在的元素(当然不是采用顺序遍历,具体采用什么方法,建议自己去看看源码),并调用compareTo()方法,根据返回的结果,决定插入位置。进而也就保证了元素的顺序。
Set类拥有add()方法,此方法的返回值有{true &false}
HashSet与TreeSet区别:
1、TreeSet 是二叉树实现的,Treeset中的数据是自动排好序的,不允许放入null值
2、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束
3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例
*********************************************************************
帮助类Collections
Collections类的静态方法:
Collections.sort(); ————————————————> 完成集合的排序工作
实验来验证如下:
Vector vect = new Vector(); //定义vect
for(int i=100;i>0;i--){
vect.add(i); //往里面添加元素
}
Vector vect2 = new Vector();
for(int j=0;j<vect.size();j++){ //得到大小size()
Object obj = vect.get(j); //得到具体元素
if(!vect2.contains(obj)){ //检验是否包含obj元素
vect2.add(obj);
}
} //到此为止vect2中的元素100 99 98 ~~~顺序
Collections.sort(vect2); //排序!!!!此时vect2中的元素顺序为1 2 3 4~~~
for(int h=0;h<vect2.size();h++){
System.out.println(vect2.get(h));
}
*********************************************************************
另:
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而equals是用来判断是否引用同一个对象。再看一下Set里面存的是对象,还是对象的引用。根据java的存储机制可知,set里面存放的是对象的引用,所以当两个元素只要满足了equals()时就已经指向同一个对象,也就出现了重复元素。所以应该用equals()来判断。
List表示有先后顺序的集合,父类为Collection,有add()、get()等方法
Collection有List、Set子类,注意:Map不是Collection的子类
*********************************************************************
ArrayList
ArrayList是用数组的方式存储的,其存储空间要大于实际存储的元素数,便于增加和插入元素,也能够直接按序号索引元素,但是插入元素时涉及到数组元素移动量大的问题,——索引数据块块而插入慢。
*********************************************************************
Vector
Vector是用数组的方式存储的,使用了synchronized方法(线程安全),其他ArrayList一样。
*********************************************************************
ArrayList、Vector和Set的比较:
都实现了List接口(List接口是继承Collection接口的),都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于动态的数组,以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是和HashSet之类的最大的不同点,HashSet不可以按索引号去检索其中的元素的,也不允许元素的重复。
*********************************************************************
Map:存放一键值对
HashMap:新的类,异步处理,非线程安全,允许有null
Hashtable:旧的类,同步处理,线程安全,不允许有null
TreeMap:有序排列,按key排序
*********************************************************************
Iterator:
迭代输出,依靠Collection接口中的iterator方法输出,是新的输出标准
Enumeration:旧的输出标准
*********************************************************************
LinkedList
LinkedList是用双向链表的方式存储的,按序号索引数据需要进行向前或者向后遍历,但是插入数据时只需记录本项的前后项即可,所以插入块。
*********************************************************************
Set
TreeSet的底层实现是采用红-黑树的数据结构,采用这种结构可以从Set中获取有序的序列,但是前提条件是:元素必须实现Comparable接口,该接口中只用一个方法,就是compareTo()方法。当往Set中插入一个新的元素的时候,首先会遍历Set中已经存在的元素(当然不是采用顺序遍历,具体采用什么方法,建议自己去看看源码),并调用compareTo()方法,根据返回的结果,决定插入位置。进而也就保证了元素的顺序。
Set类拥有add()方法,此方法的返回值有{true &false}
HashSet与TreeSet区别:
1、TreeSet 是二叉树实现的,Treeset中的数据是自动排好序的,不允许放入null值
2、HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束
3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例
*********************************************************************
帮助类Collections
Collections类的静态方法:
Collections.sort(); ————————————————> 完成集合的排序工作
实验来验证如下:
Vector vect = new Vector(); //定义vect
for(int i=100;i>0;i--){
vect.add(i); //往里面添加元素
}
Vector vect2 = new Vector();
for(int j=0;j<vect.size();j++){ //得到大小size()
Object obj = vect.get(j); //得到具体元素
if(!vect2.contains(obj)){ //检验是否包含obj元素
vect2.add(obj);
}
} //到此为止vect2中的元素100 99 98 ~~~顺序
Collections.sort(vect2); //排序!!!!此时vect2中的元素顺序为1 2 3 4~~~
for(int h=0;h<vect2.size();h++){
System.out.println(vect2.get(h));
}
*********************************************************************
另:
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而equals是用来判断是否引用同一个对象。再看一下Set里面存的是对象,还是对象的引用。根据java的存储机制可知,set里面存放的是对象的引用,所以当两个元素只要满足了equals()时就已经指向同一个对象,也就出现了重复元素。所以应该用equals()来判断。
发表评论
-
java时间大小比较
2015-04-02 21:48 1007摘自: http://blog.sina.com.cn/s/b ... -
StringBuffer的常用方法
2015-03-30 16:06 1000摘自:http://blog.csdn.net/deaful/ ... -
什么是反射、反射能干什么、如何使用反射?
2013-08-16 00:03 4894//来源互联网 一、什 ... -
Class.forName···关于Class. 的应用介绍
2013-08-15 23:36 1195//摘自互联网 Class.forName(xxx.xx ... -
java泛型map的用法(转2)
2013-07-25 23:04 92361.声明一个map: Map map = ne ... -
java泛型map的用法(转)
2013-07-25 22:56 3156http://www.apkbus.com/blog-2079 ... -
关于日期 Date Calendar
2013-07-23 22:46 1166import java.security.Timestam ... -
正则表达式 例子
2013-07-22 23:00 855import java.util.regex.Matche ... -
Iterator的使用方法
2013-07-18 21:45 0import java.util.*; publ ... -
泛型的写法种种
2013-07-18 21:41 1068public class Generics<T> ... -
ArrayList ,LinkedList, TreeSet的使用方法
2013-07-18 21:35 2358import java.util.*; public ... -
Stack的使用方法
2013-07-18 21:26 1405import java.util.Stack; ... -
Hashtable的使用方法介绍
2013-07-18 21:24 23251**************************** ... -
老式枚举的使用方法
2013-07-18 21:23 981import java.util.Enumeration; ... -
java中Map的各种排序介绍
2013-07-14 13:24 1759//本篇来源于互联网 HashMap: 最常用的Ma ... -
java配置文件用法
2013-04-14 22:43 1337package cn.com.mfsoft.config; ... -
java利用反射得到实例
2013-04-10 22:44 1313对于面向接口编程的项目免不了要一反射相接触,动态得到实例: ... -
spring的beanFactory和factoryBean
2013-04-05 16:10 2173spring的beanFactory和factoryBe ... -
Spring配置文件总结
2013-04-05 16:05 916Spring配置文件总结(转) 2010-06-07 23: ... -
Spring 的微内核与FactoryBean扩展机制
2013-04-05 15:49 1663Spring 的微内核与FactoryBean扩展机制 ...
相关推荐
今天,我们将深入了解 Java 中的集合类别,包括 ArrayList、Vector、LinkedList 和 Map 等。 ArrayList ArrayList 是一种基于数组的集合类别,它可以存储大量的数据。ArrayList 的特点是:它可以动态地增加或减少...
List、ArrayList、Vector及map、HashTable、HashMap分别的区别 List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List...
Java容器类List、ArrayList、Vector及map、HashTable应用 List、ArrayList、Vector及map、HashTable是Java中常用的容器类,它们都继承自Collection接口,并提供了不同的实现方式和特点。在实际开发中,选择合适的...
ArrayList和LinkedList虽然不是Set,但它们的父接口List属于Collection,而Collection接口有一个子接口Set,例如HashSet是Set接口的一个实现,它内部基于HashMap实现,保证元素唯一性。 7. WeakHashMap WeakHashMap...
### Vector vs ArrayList #### 区别 - **线程安全性**:`Vector` 是线程安全的,而 `ArrayList` 不是。`Vector` 中的大部分方法都是同步的,可以在不加额外同步措施的情况下用于多线程环境。 - **性能**:由于 `...
在Java集合框架的学习中,除了List接口的实现,还应了解Set接口(如HashSet和TreeSet)和Map接口(如HashMap和TreeMap)等其他容器,以及它们的数据结构和操作特性。同时,关注集合框架的并发支持,如...
### 区别与联系:List、Map、Set、Vector #### List List 是 Java 集合框架中的一个接口,它允许元素重复,并且每个元素都有一个特定的顺序位置。这意味着可以通过索引来访问 List 中的元素。List 提供了多种实现...
Java容器讲解PPT,Collection Map(HashMap TreeMap LinkedHashMap) List (ArrayList LinkedList Vector) Set (HashSet TreeSet LinkedHashSet)
实现 List 接口的常用类有 LinkedList、ArrayList、Vector 和 Stack。LinkedList 类实现了 List 接口,允许 null 元素。此外 LinkedList 提供了额外的 get、remove、insert 方法在 LinkedList 的首部或尾部。这些...
List 的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 是线程不安全的,Vector 是线程安全的,LinkedList 是线程不安全的,底层是由链表实现的。 Set 是一种无序的集合,元素不能重复,不关心元素的顺序。...
在Java编程语言中,集合框架是处理对象组织和操作的...在多线程环境中,线程安全的实现如Vector和Hashtable是必要的,但在单线程或性能要求较高的情况下,非线程安全的实现如ArrayList、LinkedList和HashMap通常更优。
List 中包括 ArrayList、LinkedList、Vector 等,Set 中包括 HashSet、LinkedHashSet 等,Map 中包括 HashMap、Hashtable 等。 List、Set、Map 是否继承自 Collection 接口 List 和 Set 继承自 Collection 接口,...
List 有三个实现类:ArrayList、LinkedList 和 Vector。ArrayList 是一个动态数组,LinkedList 是一个链表,Vector 是一个线程安全的动态数组。Set 有两个实现类:HashSet 和 TreeSet。HashSet 是一个基于哈希表的...
根据给定文件的信息,我们可以详细地探讨一下Java中几种主要的集合容器——List、Set以及Map的区别,并且深入了解它们各自的特性和应用场景。 ### 一、List #### 1. ArrayList - **特点**:`ArrayList`是基于动态...
64、说出ArrayList,Vector, LinkedList的存储性能和特性 2 65、去掉一个Vector集合中重复的元素 2 66、Collection 和 Collections的区别。 2 67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==...
本篇资源摘要信息主要讲解 Java 集合框架的相关知识点,包括 Collection 接口、List 接口、Set 接口、Map 接口的特点和区别,以及 ArrayList、LinkedList、Vector 等实现类的使用和区别。 一、Collection 接口的...
本篇将详细阐述Java常用的集合框架,包括Map、Set和List接口,以及它们的主要实现类,如HashMap、HashSet、ArrayList、LinkedList和Vector。 1. **Map接口**: Map接口是Java集合框架中用于存储键值对的接口,不...
如果在多线程环境中使用,应考虑使用其线程安全的替代品,如Vector(ArrayList的线程安全版本)、TreeSet(SortedSet的一个实现,线程安全)以及ConcurrentHashMap(线程安全的Map实现)。 5. 使用场景建议: - 当...
Java集合容器概述、集合框架、List、Set、Map接口、Iterator、ArrayList、LinkedList、Vector、HashSet、HashMap、Queue、BlockingQueue、ConcurrentHashMap等。 Java 集合容器概述 Java 集合容器是用于存储数据...
- **Vector**:在多线程环境下使用 Vector 可以避免同步问题,但在单线程或已经实现了外部同步的情况下,应优先考虑 ArrayList 或 LinkedList 以提高性能。 #### 2. Map 的应用场景 - **HashMap**:在大多数情况下...