java 框架入门_Java集合框架入门介绍(一)

Java工具包(java.util)提供了强大的数据结构,主要有以下几种接口或类枚举Enumeration 接口 从数据集合中取回一系列连续值的方法

位集合 BitSet 可以单独清楚或设置的位和标志

向量Vector 和传统数组类似,大小可以动态改变,初始不用指定大小,支持索引访问

栈 Stack 后进先出FILO的类

字典 Dictionary 抽象类定义键值对映射的数据结构

哈希表Hashtable java2之后又重构了此类,类似HashMap,同步

属性Properties 类,属性列表中,每个键值对都是String类型的。

以上这些都是传统遗留下来的,在java2引入一种新的框架-集合框架Collection Framework。

集合框架被设计成要满足一下几个要求:高性能。基本集合的实现(动态数组,链表,树,哈希表)也必须高性能。

允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

易于扩展和适应。

因此,整个集合框架是围绕一组标准接口设计而成的,开发者可以直接使用这些接口的标准实现,如ArrayList、LinkedList、HashSet、HashMap、HashTable等,也可以通过这些接口取实现自己的集合。

7f93dd6501256c8eeba1e868fbe1fbd9.gif

Java集合框架可以分为两大类容器集合Collection 存储一个元素集合 又可以分为 Set List Queue 三中子类型。 下面是一些抽象类,最后是具体实现类

图Map 存储键值对映射

所有的集合框架都包含下面这些内容

接口:是代表集合的抽象数据类型(ADT),如Collection,Set,List,Map。这些不同的接口以不同方式操作集合。

实现(类): 接口的具体实现,是可以重复使用的数据结构。

算法:实现集合接口的对象里的方法执行一些有用的计算,如搜索和排序,这些方法以多态形式存在。

75df6c48e850ed758077b54b082323f3.png

集合接口

Collection 最基本的集合接口,一个Collection代表一个Object数组。Collection接口存储一组不唯一,无序的对象。

Set接口不保存重复的元素,即存储一组唯一,无序的对象。

List接口是一个有序的Collection ,能够索引访问元素,精确定位元素位置,元素可以重复,存储一组不唯一,有序(插入顺序)的对象。(包括数组list和链表list)

SortedSet接口继承于Set,保存有序。

Map接口 存储一组键值对象,提供key到value的映射

Map.Entry描述一个在Map中的一个元素(键值对对象),Map的内部类。

SortedMap 继承于Map,内部维持key有序。

Set和List的区别

Set存储一组无序的,唯一的对象;List存储一组有序(插入顺序),元素可以重复的对象。

Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变(HashSet、TreeSet)

List和数组类似,可以动态增长,查找效率高,删除插入效率低,会引起其他元素位置变动。(ArrayList,LinkedList,Vector)

集合的遍历

一般数组遍历是使用for或增强for,这两个方法也可以用在集合中,但还有一种迭代器遍历集合框架元素,迭代器是一个对象,实现了Iterator或者ListIterator接口。

迭代器,使你能够通过循环来得到或删除集合中的元素。ListIterator继承Iterator,双向遍历。

实例,集合的遍历package com.study.day04;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

/**

* @author gaochaochao

* @date 2018年11月4日 下午10:05:34

* @description 测试集合的遍历

*/

public

class ArrayListTest {

enum day{monday,tueday,wednesday,thursday,friday,saturday,sunday};

public

static

void main(String [] args) {

List list=new ArrayList<>();

list.add("monday");

list.add("tuesdat");

list.add("wednesday");

list.add("thursday");

list.add("friday");

list.add("saturday");

list.add("sunday");

//集合遍历方法1 增强for

for(String s:list) {

System.out.print(s);

}

System.out.println();

//集合遍历方法2 普通for

for(int i=0;i

System.out.print(list.get(i));

}

System.out.println();

//集合遍历方法3 迭代器遍历

for(Iterator it=list.iterator();it.hasNext();) {

System.out.print(it.next());

}

System.out.println();

//集合遍历方法四 转化成数组 在遍历

String[] arrayStr=new String[list.size()];

list.toArray(arrayStr);

for(String s:arrayStr) {

System.out.print(s);

}

System.out.println();

LinkedList linkedList=new LinkedList<>(list);

for(String s :linkedList) {

System.out.print(s);

}

System.out.println();

for(Iterator it = linkedList.iterator();it.hasNext();) {

System.out.print(it.next());

}

System.out.println();

//Map遍历

Map map=new HashMap<>();

map.put("星期一",day.monday);

map.put("星期二",day.tueday);

map.put("星期三",day.wednesday);

map.put("星期四",day.thursday);

map.put("星期五",day.friday);

map.put("星期六",day.saturday);

map.put("星期七",day.sunday);

//只输出map的values

for(day d:map.values()) {

System.out.print(d);

}

System.out.println();

//使用增强for遍历map,输出key--> value

for(Entry entry: map.entrySet()) {

System.out.print(entry.getKey()+""+entry.getValue());

}

System.out.println();

//使用iterator遍历,输出key-->value

for(Iterator> it = map.entrySet().iterator();it.hasNext();) {

Entry element=it.next();

System.out.print(element.getKey()+""+element.getValue());

}

System.out.println();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值