Java集合框架
来源:互联网 发布:他知道我们在膜他知乎 编辑:程序博客网 时间:2024/06/06 07:51
Java提供了几个能有效地组织和操作数据的数据结构,这些数据结构简称为Java集合框架。
Java集合框架主要包括两种类型的容器,一种是集合(接口Collection<E>),存储一个元素集合,另一种是图(接口Map<K,V>),存储键/值对映射。Collection接口又有3种子类型,List、Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList、LinkedList、Vector、HashSet、LinkedHashSet、HashMap、LinkedHashMap等等。
1. List
下面介绍ArrayList、LinkedList、Vector这三个类
java.util.ArrayList<E> : 基于数组:查询方便,插入麻烦
代码举例:
package List;import java.util.ArrayList;import java.util.List;import DrawBoard2.Shape;import DrawBoard2.ShapeLine;public class MyListArry {List<Shape> myList = null;public void genData(){myList = new ArrayList<Shape>();myList.add(new ShapeLine(1,1,1,1,null,1));//添加元素myList.add(new ShapeLine(2,1,1,1,null,1));myList.add(new ShapeLine(3,1,1,1,null,1));myList.add(new ShapeLine(4,1,1,1,null,1));}public void printData(){//遍历ArrayListint size = myList.size();//获取元素个数for(int i = 0;i < size;i++){Shape shape = myList.get(i);//获取指定位置元素System.out.println(shape);}} public static void main(String[] args) {MyListArry mla = new MyListArry();mla.genData();mla.printData();}}
java.util.LinkedList<E> : 基于链表:插入容易,访问麻烦
代码举例(类似ArrayList)
package List;import java.util.LinkedList;import java.util.List;import DrawBoard2.Shape;import DrawBoard2.ShapeLine;public class MyLink {List<Shape> myList = null;public void genData(){myList = new LinkedList<Shape>();myList.add(new ShapeLine(1,1,1,1,null,1));myList.add(new ShapeLine(2,1,1,1,null,1));myList.add(new ShapeLine(3,1,1,1,null,1));myList.add(new ShapeLine(4,1,1,1,null,1));}public void printData(){//遍历LinkedListint size = myList.size();for(int i = 0;i < size;i++){Shape shape = myList.get(i);System.out.println(shape);}} public static void main(String[] args) {MyLink ml = new MyLink();ml.genData();ml.printData();}}LinkedList是在一个链表中存储元素,如果需要经常插入或者删除元素可以选择该类
java.util.Vector<E> : 基于数组:基于线程安全,付出一定性能代价(代码类似ArrayList)
注:List是有序的集合(可按插入顺序显示),且可以重复插入
2.Set
HashSet
package List;import java.util.HashSet;import java.util.Iterator;import DrawBoard2.Shape;import DrawBoard2.ShapeLine;public class TestHashSet {HashSet<Shape> myList = null;public void genData(){myList = new HashSet<Shape>();myList.add(new ShapeLine(1,1,1,1,null,1));myList.add(new ShapeLine(2,1,1,1,null,1));myList.add(new ShapeLine(3,1,1,1,null,1));myList.add(new ShapeLine(4,1,1,1,null,1));}public void printData(){//遍历Iterator<Shape> iterator = myList.iterator();//创建迭代器对象while(iterator.hasNext()){ //如果有下一个元素可以迭代则返回true继续执行循环Shape s = iterator.next();System.out.println(s);}} public static void main(String[] args) {TestHashSet hs = new TestHashSet();hs.genData();hs.printData();}}
LinkedHashSet是HashSet的子类
注:Set是个无序的,且不允许重复元素存在的集合,遍历时用到迭代器
Iterator<Shape> iterator = hashSet.iterator();while (iterator.hasNext()) {Shape s = iterator.next();System.out.println(s);}
3.Map<K,V>
HashMap<K,V>
package List;import java.util.HashMap;import java.util.Iterator;import java.util.Set;import DrawBoard2.Shape;import DrawBoard2.ShapeLine;public class TestHashMap {HashMap<String,Shape> myList = null;public void genData(){myList = new HashMap<String,Shape>();myList.put("shape1",new ShapeLine(1,1,1,1,null,1));myList.put("shape2",new ShapeLine(2,1,1,1,null,1));myList.put("shape3",new ShapeLine(3,1,1,1,null,1));myList.put("shape4",new ShapeLine(4,1,1,1,null,1));}public void printData(){//遍历Set<String> keySet = myList.keySet(); //获得所含键Iterator<String> iterator = keySet.iterator(); //调用迭代器方法while(iterator.hasNext()){ String key = iterator.next();Shape shape = myList.get(key); //获得指定键所映射的值System.out.println(key);System.out.println(shape);}} public static void main(String[] args) {TestHashMap hm = new TestHashMap();hm.genData();hm.printData();}}
在Map中键可以是任意类型的对象,但不能有重复的键,每个键都对应一个值,真正存储在图中的是键值构成的条目,LinkedHashMap继承自HashMap,它主要是用链表实现来扩展HashMap类,HashMap中条目是没有顺序的,但是在LinkedHashMap中元素既可以按照它们插入图的顺序排序,也可以按它们最后一次被访问的顺序排序。
0 0
- Java集合:集合框架
- 【Java】java集合框架
- [Java]Java集合框架
- JAVA集合框架和集合
- 【集合】Java集合框架介绍
- Java集合之集合框架
- [集合]Java的集合框架 Collection集合
- Java集合框架 (一)
- Java集合框架 (二)
- Java集合框架(三)
- Java集合框架
- 也来谈Java集合框架
- 也来谈Java集合框架
- Java集合框架 (一)
- Java集合框架
- 也来谈Java集合框架
- java集合框架
- Java集合框架总结
- 33. Search in Rotated Sorted Array 旋转排序数组极值的二分求法
- 【寒江雪】开启深度缓存
- 制作Plesk镜像
- JavaWeb学习之路(一)--- 数据库简单操作操作和事务
- 判断对象类型的方法
- Java集合框架
- SpringBoot(2) 搭建SpringFox环境
- android:sqlite的使用(读取res/raw的db文件)一种方法
- CC2530 zstack 2.5.1 生成hex文件
- cocos2d-x 检测矩形碰撞
- 用Hostapd创建可用的软AP
- tomcat报错
- ECMAScript 6(3)const和顶层对象
- 网络程序设计