集合基础知识

xiaweinixxw 2010-06-09 04:12:06
一、数组、集合
数组、集合:都是一种容器,用一个对象管理多个对象;
数组:不能自动增长;只能存放同类型的元素
集合:能自动扩容;部分集合允许存放不同类型的元素;
二、学习这些集合类要掌握哪些东西:
1)怎样得到(选择)集合对象;
2)怎样添加元素
3)怎样删除元素
4)怎样循环遍历没一个元素
三、list、set、map
collection:父接口;
Set:接口 ---一个实现类: HashSet
List:接口---三个实现类: LinkedList,Vector,ArrayList
SortedSet:接口---实现类:TreeSet
1、List:
List:有序列表,允许存放重复的元素;
实现类:
ArrayList:数组实现,查询快,增删慢,线程不安全,轻量级;下标也是从0开始;
LinkedList:链表实现,增删快,查询慢
Vector:数组实现,线程安全,重量级
2.Set:
无序集合,不允许存放重复的元素;
实现类 HashSet:equals返回true,hashCode返回相同的整数;哈希表;

子接口SortedSet:对Set排序 实现类 :TreeSet:二叉树实现的;
看API:<E> 泛型:表示一个对象;
Iterator:接口,迭代器;
java.util;
hasNext();
next();
remove();
Iterable:可迭代的,访问的 ;
java.lang;实现了可迭代的接口就可以用迭代的方式访问;
只需实现 iterator();方法即可;Iterator iterator();
三种循环的访问方式:
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
Iterator it=list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
for--each 循环:
for(Object obj:list){
System.out.println(obj);
}


只有实现了Iterable接口的才能用第三种;能用第二种的也一定能用第三种;
ArrayList:自动扩容,是数组照搬过来的;
3.Map
HashMap:键值对,key不能重复,但是value可以重复;key的实现就是HashSet;value对应着放;
HashSet 的后台有一个HashMap;初始化后台容量;只不过生成一个HashSet的话,系统只提供key的访问;
如果有两个Key重复,那么会覆盖之前的;

Hashtable:线程安全的
Properties:java.util.Properties; key和value都是String类型,用来读配置文件;

HashMap与Hashtable区别:
HashMap线程不安全的,允许null作为key或value;
Hashtable线程安全的,不允许null作为key或value;

TreeMap: 对key排好序的Map; key 就是TreeSet, value对应每个key;
key要实现Comparable接口或TreeMap有自己的构造器;
HashSet:remove(Object o)的原则看这个对象O的Hashcode和equals是否相等,并不是看是不是一个对象;
定义一个Map; key是课程名称,value是Integer表示选课人数;
map.put(cou,map.get(cou)+new Integer(1));
...全文
333 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
liubin9 2012-03-27
  • 打赏
  • 举报
回复
很及时,一直在纠结容器和类集的关系呢。···
daocaoren_135 2011-11-26
  • 打赏
  • 举报
回复
不错, 还行
高亮 2010-06-11
  • 打赏
  • 举报
回复
接分,学习一下
tjb1216 2010-06-11
  • 打赏
  • 举报
回复
人还少,接点
funfun5433 2010-06-11
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!小技巧:
gaojava 2010-06-11
  • 打赏
  • 举报
回复
复习下
dinglimin2009 2010-06-10
  • 打赏
  • 举报
回复
不错。。。
yan0426 2010-06-10
  • 打赏
  • 举报
回复
定一下
  • 打赏
  • 举报
回复
收藏吧,顶一下lz
csupanmin 2010-06-10
  • 打赏
  • 举报
回复
学习接分
jiazimo 2010-06-10
  • 打赏
  • 举报
回复
学习接分
nifengshuoyun 2010-06-10
  • 打赏
  • 举报
回复
学习了,谢谢
niujw002 2010-06-10
  • 打赏
  • 举报
回复
学习了。
xx314327475 2010-06-10
  • 打赏
  • 举报
回复
复习+接分
happysmhzp 2010-06-10
  • 打赏
  • 举报
回复
学习了
xu3352 2010-06-10
  • 打赏
  • 举报
回复
收藏一个了...... 顶 ......
ditouye 2010-06-09
  • 打赏
  • 举报
回复
接分……
alunfeixue 2010-06-09
  • 打赏
  • 举报
回复
dddddz 2010-06-09
  • 打赏
  • 举报
回复
JF...JF..
ronniegxq 2010-06-09
  • 打赏
  • 举报
回复
精辟。。接分
加载更多回复(6)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧