猫哥直接跳过了类、封装、继承,来讲容器。此处稍微提下需要掌握的,对于类,掌握下面这个最基本的就够了。
public class TypeName{//类名称 //成员变量定义 int i; string x; //成员函数定义 public int add(){} }
对于封装、继承甚至后面的接口、抽象类、内部类等Java语法,脱离了应用场景去学习是很飘渺的,所以在以后用到的时候再说明。在目前这个阶段,会定义类,然后实现类的对象,调用类的方法,可以了。
继续本篇的正题:常用容器。猫哥也不过多解释纷繁复杂的继承关系,简单把常用容器分类三类:List、Set、Map。
List是有序的元素集,常用的有ArrayList和LinkedList,其中ArrayList有点像数组,查询速度快,插入、删除速度慢。而LinkedList像链表,查询速度稍慢,插入、删除速度较快。List使用get(i)获取第i个元素(i就是顺序),使用add()添加元素。
Set是不包含重复元素的元素集。常用的有HashSet和TreeSet,HashSet性能好,比较常用。那还要TreeSet干哈呢,人家TreeSet能排序哦。
Map是key-value映射的元素集,也就是说Map中的每个元素包含两个部分,key表示元素的索引键,而value是该键对应的值。所以添加元素是put(key,value),获取元素是get(key),那key不存在get(key)就返回null了。
常用的类是HashMap。
说白了,List、Set、Map是三种接口,而ArrayList、LinkedList、HashSet、TreeSet、HashMap等是接口的具体实现类。
其实List和Set还是很像的,都是单个元素的元素集,所以他俩其实都有一个最基本的接口即Collection,这个Collection接口的标准非常简单,就是Object的集合,可以包含很多个Object。OK,写一段详细的代码演示下:
import java.util.*;//容器类所在的包得导入进来
/** * 容器使用演示 * @作者 猫哥 * @编码时间 2016.12.27 */ public class ContainerDemo {//定义了一个类,用来演示容器的使用 public static void main(String[] args) {//这个方法是程序的入口 System.out.println("开始比较ArrayList和ArrayList"); ArrayList stringList=new ArrayList();//这个ArrayList只能添加String类型元素 ArrayList objectList=new ArrayList();//这是一个无类型说明的ArrayList,可以添加任意Object stringList.add("hello 101");//只能添加String类型的元素 stringList.add("hello 102"); System.out.println("遍历输出 stringList"); for(int i=0;i System.out.println(stringList.get(i)); } System.out.println("foreach输出 stringList 因为里面的元素都是统一的"); for(String str:stringList){ System.out.println(str); } objectList.add(103);//添加不同种类的元素,其实添加的是引用的值 objectList.add("hello 103"); System.out.println("遍历输出 objectList"); for(int i=0;i System.out.println(objectList.get(i)); } System.out.println("foreach输出 objectList "); for(Object obj:objectList){ System.out.println(obj); } System.out.println("开始演示HashSet和TreeSet"); HashSet hashSet=new HashSet(); TreeSet treeSet=new TreeSet(); hashSet.add("a"); hashSet.add("b"); hashSet.add("d"); hashSet.add("c"); hashSet.add("a"); Iterator irhashSet=hashSet.iterator();//Iterator用于遍历 System.out.println("输出可见a排除重复了,注意HashSet不保存存放时候的顺序"); while(irhashSet.hasNext()) { System.out.println(irhashSet.next()); } treeSet.add("a"); treeSet.add("b"); treeSet.add("d"); treeSet.add("c"); treeSet.add("a"); Iterator irTreeSet=treeSet.iterator();//Iterator用于遍历 System.out.println("输出可见a排除重复了,TreeSet是有确定顺序的,一般是从小到达,从前到后"); while(irTreeSet.hasNext()) { System.out.println(irTreeSet.next()); } HashMap hashMap=new HashMap();//key不可重复,value可以 hashMap.put("学号001", "姓名张三"); hashMap.put("学号002", "姓名李四"); hashMap.put("学号003", "姓名张三"); Iterator irHashMap = hashMap.keySet().iterator();//keySet()把hashMap中的key值整理为set while (irHashMap.hasNext()){ Object key = irHashMap.next();//获取key Object val = hashMap.get(key);//获取对应value System.out.print(val); } } }