黑马程序员——集合(一)
2013-12-21 02:09
113 查看
(一)集合的概况
:整个集合的框架主要包括三大接口,分别是Collection、Set、Map
首先来了解Collection接口,该接口有List和Set两个子类接口
Colection向子类提供了不少基本操作方法:
具体有:add(),clear();contains();euuals();hashCode();isEmpty();remove();size();toArray();
1,先来了解List接口
使用List集合的情况:里面的所有内容和元素都可以重复
List接口常用方法:分为增删改查四个
增:add(index, element);add(index,collection);
删:remove(index);remove(index,element);
查:get(index);subList(from,to);listIterator();
改:set(index,element);
在集合中十分重要的一个概念就是迭代器,下面了解迭代器:
迭代器 :其实就是集合中取出元素的方式。在集合中循环调用next(),一次就要hashNext()一次。Iterator,其实也是一个接口(专门用来判断,取出),通过每个集合内部类都符合一个规则,并且都提供一个对外方法iterator();.
特别注意:
在list中的特有迭代器listiterators 是Iterator的子接口,在操作的时候不可以通过集合对象的方法操作集合中的数据,否则会发生ConcurrentModificationException异常,所以在迭代只能用Iterator操作,但是Iterator操作方法有限,只可以对元素进行判断,取出,删除操作。如果想继续添加或者修改等等操作,就要用到其子类接口listIterator操作,实例代码如下:
import java.util.*;
class ListDemo
{
public static void main(String[] args)
{
ArrayList al=new ArrayList();
//添加元素
al.add("java1");
al.add("java2");
al.add("java3");
ListIterator li= al.listIterator() ;
while(li.hasNext())
{
Object obj = li.next();
if(obj.equals("java3"))
// li.add("java20");
li.set("java66");
}
sop(al);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
更清晰的来分析List接口,里面包括Arrylist,Vectory,Linkedlist
三者之间的区别:
Arrylist:底层为数组结构,查阅快(不同步),但是增删慢
Vectory:底层是数组数据结构,特点是,用于线程同步,增删查询操作都慢。而且枚举是其特有的取出方式,实例代码如下:
import java.util.*;
class VectorDemo
{
public static void main(String[] args) throws Exception
{
Vector v=new Vector();
v.add("java01");
v.add("java02");
v.add("java03");
v.add("java04");
Enumeration en =v.elements();
while(en.hasMoreElements())
{
System.out.println(en.nextElement());}
}
}
Linkedlist:底层为链表数据结构,增删快,查询慢,具有自己的特殊方法添加获取查询方法。
2.Set接口
Set集合中的元素在村如何取出的时候是无序的,具有唯一性,即元素不可以重复。
Set是Collection 的子接口,所以其功能和父类保持一致。
Set常见的子类主要有:HashSet,TreeSet
我们先来了HashSet:
注意:HashSet是如何保证元素的唯一性??
深入分析:是通过元素的两个方法确定是的,hashCode(),和equals()完成,
如果元素的HashCode();值相同就会去判断equals()是否为true,
如果元素的HashCode()值不同,就不会去调用equals();
可以理解为在数据操作的时候,有以下动作,首选比较HashCode值,不同,做出相应处理,相同也作出相应处理。
HashSet与ArrayList的区别:HashSet的删除操作依赖哈希值和equals(),但是ArrayList
4000
的删除元素只依赖equals()
自我学习心得:这部分集合的学习让我对数据和对象的操作上升到集合的概念,从整体框架中我看到对象的操作的更多的方式,比学习集合以前要方便的多。
:整个集合的框架主要包括三大接口,分别是Collection、Set、Map
首先来了解Collection接口,该接口有List和Set两个子类接口
Colection向子类提供了不少基本操作方法:
具体有:add(),clear();contains();euuals();hashCode();isEmpty();remove();size();toArray();
1,先来了解List接口
使用List集合的情况:里面的所有内容和元素都可以重复
List接口常用方法:分为增删改查四个
增:add(index, element);add(index,collection);
删:remove(index);remove(index,element);
查:get(index);subList(from,to);listIterator();
改:set(index,element);
在集合中十分重要的一个概念就是迭代器,下面了解迭代器:
迭代器 :其实就是集合中取出元素的方式。在集合中循环调用next(),一次就要hashNext()一次。Iterator,其实也是一个接口(专门用来判断,取出),通过每个集合内部类都符合一个规则,并且都提供一个对外方法iterator();.
特别注意:
在list中的特有迭代器listiterators 是Iterator的子接口,在操作的时候不可以通过集合对象的方法操作集合中的数据,否则会发生ConcurrentModificationException异常,所以在迭代只能用Iterator操作,但是Iterator操作方法有限,只可以对元素进行判断,取出,删除操作。如果想继续添加或者修改等等操作,就要用到其子类接口listIterator操作,实例代码如下:
import java.util.*;
class ListDemo
{
public static void main(String[] args)
{
ArrayList al=new ArrayList();
//添加元素
al.add("java1");
al.add("java2");
al.add("java3");
ListIterator li= al.listIterator() ;
while(li.hasNext())
{
Object obj = li.next();
if(obj.equals("java3"))
// li.add("java20");
li.set("java66");
}
sop(al);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
更清晰的来分析List接口,里面包括Arrylist,Vectory,Linkedlist
三者之间的区别:
Arrylist:底层为数组结构,查阅快(不同步),但是增删慢
Vectory:底层是数组数据结构,特点是,用于线程同步,增删查询操作都慢。而且枚举是其特有的取出方式,实例代码如下:
import java.util.*;
class VectorDemo
{
public static void main(String[] args) throws Exception
{
Vector v=new Vector();
v.add("java01");
v.add("java02");
v.add("java03");
v.add("java04");
Enumeration en =v.elements();
while(en.hasMoreElements())
{
System.out.println(en.nextElement());}
}
}
Linkedlist:底层为链表数据结构,增删快,查询慢,具有自己的特殊方法添加获取查询方法。
2.Set接口
Set集合中的元素在村如何取出的时候是无序的,具有唯一性,即元素不可以重复。
Set是Collection 的子接口,所以其功能和父类保持一致。
Set常见的子类主要有:HashSet,TreeSet
我们先来了HashSet:
注意:HashSet是如何保证元素的唯一性??
深入分析:是通过元素的两个方法确定是的,hashCode(),和equals()完成,
如果元素的HashCode();值相同就会去判断equals()是否为true,
如果元素的HashCode()值不同,就不会去调用equals();
可以理解为在数据操作的时候,有以下动作,首选比较HashCode值,不同,做出相应处理,相同也作出相应处理。
HashSet与ArrayList的区别:HashSet的删除操作依赖哈希值和equals(),但是ArrayList
4000
的删除元素只依赖equals()
自我学习心得:这部分集合的学习让我对数据和对象的操作上升到集合的概念,从整体框架中我看到对象的操作的更多的方式,比学习集合以前要方便的多。
相关文章推荐
- 黑马程序员-----集合
- 黑马程序员——java编程那些事儿____集合框架工具类
- 黑马程序员——JAVA基础----集合框架(二)
- 黑马程序员_集合框架
- 黑马程序员---集合
- 【黑马程序员】StringBuffer,Array,Integer,BigInteger,Date,Calendar,集合——Java复习笔记
- [黑马程序员]集合--TreeSet
- 黑马程序员 + 第15天 集合
- 黑马程序员——Java基础---泛型、集合框架工具类:collections和Arrays
- 黑马程序员——java复习总结——集合框架
- 黑马程序员--07.集合框架--03.【列表List集合的共性方法】【列表迭代器ListIterator】
- 黑马程序员-队Collection集合 Map集合的小总结
- 黑马程序员———集合及其collection接口及其子类的简单介绍
- 黑马程序员--07.集合框架--06.【HashSet】
- 黑马程序员:Java基础——List集合共性方法,Iterator迭代和集合具体对象的特点
- 黑马程序员-Map集合
- 黑马程序员-JAVA基础-Java 集合之List 集合
- 黑马程序员 集合框架
- 黑马程序员 集合ArrayList、HashSet和TreeSet的使用
- 黑马程序员_java编程基础17 集合框架Map