黑马程序员《集合(上)》
来源:互联网 发布:学霸模式软件 编辑:程序博客网 时间:2024/05/04 18:17
一、集合概述
1、
Collection接口有两个子接口:
List(列表) ,Set(集)
List:可存放重复元素,元素存取是有序的。
Set:不可以存放重复元素,元素存取是无序的。
2、
List接口中常用类
Vector:线程安全,但速度慢,已被ArrayList替代。
ArrayList:线程不安全,查询速度快。
LinkedList:链表结构,增删速度快。取出LIst集合中元素的方式:
• get(int index):通过脚标获取元素。
• iterator():通过迭代方法获取迭代器对象。
l
迭代是取出集合中元素的一种方式。
因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。
用法:
Iterator iter = l.iterator();while(iter.hasNext()){System.out.println(iter.next());}for(Iterator iter = iterator();iter.hasNext(); ){System.out.println(iter.next());}
3、迭代注意事项
* 迭代器在Collcection接口中是通用的,它替代了Vector类中的Enumeration(枚举)。
* 迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException。
* 迭代器的next方法返回值类型是Object,所以要记得类型转换。
4、set接口中常用的类
HashSet:线程不安全,存取速度快。
唯一性原因:通过equals方法和hashcode方法来保证元素的唯一性。
TreeSet:线程不安全,可以对set集合中的元素进行排序。
唯一性原因:通过compareTo或者compare方法中的来保证元素的唯一性。元素是以二叉树的形式存放的。
5、泛型的特点
* 提高了程序的安全性
* 将运行期遇到的问题转移到了编译期
* 省去了类型强转的麻烦
l
* 泛型类的出现优化了程序设计
6、Map集合
Map集合常用类
Hashtable:线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。
l
HashMap:线程不安全,速度快,允许存放null 键,null值。
l
TreeMap:对键进行排序,排序原理与TreeSet 相同。
Map与collcection区别:
* Map与Collection在集合框架中属并列存在l
* Map存储的是键值对
l
* Map存储元素使用put方法,Collection使用add方法
l
* Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素
l
* Map集合中键要保证唯一性
二、Collection中的一些功能
Collection定义了集合框架的共性功能。
1,添加
add(e);
addAll(collection);
2,删除
remove(e);
removeAll(collection);
clear();
3,判断。
contains(e);
isEmpty();
4,获取
iterator();
size();
5,获取交集。
retainAll();
6,集合变数组。
toArray();
1,add方法的参数类型是Object。以便于接收任意类型对象。
2,集合中存储的都是对象的引用(地址)
什么是迭代器呢?(iterator被封装在对象内部)
其实就是集合的取出元素的方式。
如同抓娃娃游戏机中的夹子。
迭代器是取出方式,会直接访问集合中的元素。
所以将迭代器通过内部类的形式来进行描述。
通过容器的iterator()方法获取该内部类的对象。
三、代码如下
public class CollectionDemo {public static void main(String[] args) {//method_get();//method_2();base_method();}public static void sop(Object obj){System.out.println(obj);}public static void method_get(){ArrayList al=new ArrayList();//1、添加元素。al.add("java01");//add(Object obj);al.add("java02");al.add("java03");al.add("java04");/*Iterator it=al.iterator(); *这个方法访问的是这个接口的子对象,接口型应用只能指向接口的子对象,而这个对象 不是new出来的,而是通过集合的方法获取出来的。获取迭代器,用于取出集合中的元素。 while(it.hasNext())//haxnext()如果仍有元素可以迭代,则返回true{sop(it.next());}*/for(Iterator it=al.iterator();it.hasNext();){sop(it.next());}}public static void method_2(){ArrayList al1=new ArrayList();al1.add("java01");al1.add("java02");al1.add("java03");al1.add("java04");ArrayList al2=new ArrayList();al2.add("java03");al2.add("java04");al2.add("java05");al2.add("java06");sop("交集:"+al1.retainAll(al2));//取交集,al1.retainall(al2);返回的是boolean类型//al1.removeAll(al2);sop("a12:"+al2);//打印a12:[java03, java04, java05, java06]}public static void base_method(){//创建一个集合容器。使用Collection接口的子类。ArrayListArrayList al=new ArrayList();//1,添加元素。al.add("java01");//add(Object obj);al.add("java02");al.add("java03");al.add("java04");//打印原集合。sop("原集合:"+al);//3,删除元素。al.remove("java02");sop("删除后的"+al);//al.clear();//清空集合。//4,判断元素。sop("java03是否存在:"+al.contains("java03"));sop("集合是否为空?"+al.isEmpty());//2,获取个数。集合长度。sop("size:"+al.size());//打印改变后的集合。sop(al);}}--------------------ASP.Net+Android+IOS开发、java培训、期待与您交流! --------------------
- 黑马程序员《集合(上)》
- 黑马程序员-集合 (上)
- 黑马程序员--集合(上)
- 黑马程序员 Java基础 ---> 集合(上)
- 黑马程序员——集合(上)
- 黑马程序员—集合(上)-Collection
- 黑马程序员_java_集合总结(上)
- 黑马程序员——集合(上)
- 黑马程序员_集合框架(上)-单列集合类
- 黑马程序员_java_集合(上)
- 黑马程序员_JAVA集合(上)
- 黑马程序员_java集合上
- 黑马程序员——关于集合(上)
- 黑马程序员--Java之集合(上)07
- 黑马程序员——JAVASE-集合(上)
- 黑马程序员——Java基础---集合类(上)
- 黑马程序员——Java基础---集合类(上)
- 黑马程序员——java基础---集合(上)
- 三角形类的构造函数4
- XPath编写规则学习
- mysql执行sql脚本
- 求三个长方柱体积.cpp
- 三> cocos2dx常见32种场景切换动画
- 黑马程序员《集合(上)》
- 题目1067:n的阶乘
- cocos2dx不同的坐标系,锚点
- cocos2dx常见49种Action
- <四> cocos2dx动画常见22种特效
- HBase创建二级索引
- android 打开默认的系统相册,或拍照选取图片,并图片裁剪;
- Android资源命名规范
- Rational Rose2007(v7.0)下载地址、安装及激活详解教程(图)