<<黑马程序员>>JAVA基础之集合
来源:互联网 发布:快速排序算法实例 编辑:程序博客网 时间:2024/05/16 07:25
1.定义及特点
集合就是用来存储对象的容器,集合的长度是可变的,可以存储不同类型的对象,集合分为单列集合和双列集合,单列集合的顶层为Collection接口,双列集合的顶层为Map接口。
2.Collection集合
Collection集合是接口,无法创建对象,只能通过其子类来创建对象,Collection下面还有两个自接口,一个是List接口,一个是Set接口。有增删查改等方法,还有用迭代器获取元素的方法。
代码演示Collection迭代器:
public static void show() {
Collection<String> co= new ArrayList<String>();
co.add("aa");
co.add("bb");
co.add("cc");
Iterator<String> it = co.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
2.1 List接口
List集合的特点是有序的,指存放数据的先后顺序,元素是可以重复的。List下面有2个子类,一个是ArrayList集合,另外一个是LinkedList集合。
ArrayList:
同样是有序,元素可重复,另外可以进行角标操作,集合查改快,增删慢。
实现原理:ArrayList集合底层是用数组来实现数据存储的,当存放的长度超过数组默认的长度时,那么就会自动生成一个长度为原来数组的1.5倍的数组,所以该集合改查快,增删慢。
ArrayList集合特有的迭代器:
Collection自己的迭代器在迭代的时候不能对元素进行操作,否则会出现并发异常。但是可以用ArrayList特有的迭代器
代码演示:
public static void show() {
ArrayList<String> co= new ArrayList<String>();
co.add("aa");
co.add("bb");
co.add("cc");
ListIterator<String> it = co.listIterator();
while(it.hasNext()){
it.add("dd");
System.out.println(it.next());
}
LinkedList:
实现原理:LinkedList集合底层是用链表来存储数据的,所以就增删数据块,查找慢,因为是链表来链表来存储的,所以可以模拟堆栈和队列。
模拟堆栈代码演示:
class StackList{
LinkedList list=null;
public StackList(){
list=new LinkedList();
}
public void set(Object obj){
list.push(obj);
}
public Object get(){
return list.pop();
}
}
模拟队列代码演示:
class TeamList{
LinkedList list=null;
public TeamList(){
list=new LinkedList();
}
public void set(Object obj){
list.offer(obj);
}
public Object get(){
return list.poll();
}
}
2.2 Set接口
Set集合里面存放的数据是无序的,元素是不可以重复的,Set下面有2个子类,一个是HashSet,一个是TreeSet。
HashSet:
底层使用哈希表来存储数据,所以增删查改都比较快,HashSet集合通过先比较哈希值调用equals方法来判断两个元素是否相等,如果相等,则后一个不存储!
TreeSet:
TreeSet集合底层采用二叉树来存储数据,效率也很高,TreeSet可以自然排序,所以元素必须具备排序功能。TreeSet通过比较器来旁边两个元素是否相同,当比较的值为0时,则相同,则不存储。
元素比较的方式有2种。一种是该元素的类实现Comparable接口,重写compareTo方法。另外一种是自定义比较器,实现Comparator接口,把比较器传入TreeSet中。
3Map集合
Map集合是双列集合,里面存放的是键值对,键是唯一的不可重复的,值是可重复的,Map下面有2个子类,HashMap和TreeMap,显然可知,TreeMap是带比较性的双列集合,底层是二叉树,和TreeSet差不多,双列集合的取出就是讲键先转换成一个set集合即可;
代码演示HashMap的取出元素方式一:
public static void show() {
HashMap<String,Integer> hs = new HashMap<String,Integer>();
hs.put("tom", 22);
hs.put("jun", 31);
hs.put("bili", 43);
hs.put("Luck", 15);
Set set = hs.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext()){
String s = it.next();
System.out.println(s+":::"+hs.get(s));
}
}
代码演示HashMap的取出元素方式二:
public static void show() {
HashMap<String,Integer> hs = new HashMap<String,Integer>();
hs.put("tom", 22);
hs.put("jun", 31);
hs.put("bili", 43);
hs.put("Luck", 15);
Set<Map.Entry<String, Integer>> set=hs.entrySet();
Iterator<Map.Entry<String, Integer> > it = set.iterator();
while(it.hasNext()){
Map.Entry<String, Integer> me =it.next();
String name=me.getKey();
int age = me.getValue();
System.out.println(name+":::"+age);
}
}
- 黑马程序员-java基础之Map集合
- 黑马程序员---java基础之集合Collection
- 黑马程序员—java基础之集合
- <<黑马程序员>>JAVA基础之集合
- 黑马程序员—JAVA基础之集合
- 黑马程序员--JAVA基础之集合类
- 黑马程序员--Java基础之集合
- 黑马程序员--Java基础之集合类
- 黑马程序员 java基础之list集合
- 黑马程序员 java基础之set集合
- 黑马程序员 java基础之Map集合
- 黑马程序员java基础之Map集合
- 黑马程序员--java基础复习之集合
- 黑马程序员---java基础之集合Set
- 黑马程序员----java基础之Map集合
- 黑马程序员-JAVA基础之集合框架
- 黑马程序员-------Java基础-------集合之Map
- 黑马程序员-java基础之集合List,Set集合
- 排序之qsort函数
- Eclipse安装aptana
- 数据结构之AVL树
- db笔记本
- 为Windows 7及以上的系统文件添加TrustedInstall
- <<黑马程序员>>JAVA基础之集合
- 数据结构之哈夫曼树
- 节约内存:Instagram的Redis实践
- hive 表行打列
- 数据结构之查找二叉树
- 【OpenStack】Openstack Keystone LDAP后端配置
- float与double的范围和精度
- Instagram 架构分析笔记(转)
- prim算法简介及实现