java基础教程-容器(三)

三、容器(图很重要)存储多个数据,想存多少存多少 

3.1 简介

     

  左边是一个一个往里装,右边map是一对一对往里装。collection接口是set和list接口的父类,set没有顺序,不可以重复;list有顺序,可以重复(可以equals)。Map定义了“键(key)-值(value)”存储,成对存储。

  Collection类中,在调用remove、contains方法时,需要比较对象是否相等,这会涉及到object类中的equals方法和hashcode方法,对于自定义的类型,需要重写equals和hashcode方法以实现自定义对象的相等规则。例:

     

  必学的六个接口:collection、set、list、map、iterator(遍历元素),comparable

3.2增强的for循环(JDK1.5以后)

  缺点:

    数组:不能方便的访问下标;

    集合:与iterator相比,不能方便的删除集合中的内容。所以除了简单的遍历读数据外,一般不用。

import java.util.*;

public class EnhancedFor {

public static void main(String[] args) {

int[] arr = {1, 2, 3, 4, 5};

for(int i : arr) {

System.out.println(i);

}

Collection c = new ArrayList();

c.add(new String("aaa"));

c.add(new String("bbb"));

c.add(new String("ccc"));

for(Object o : c) {

System.out.println(o);

}

}

}

3.3Iterator接口(遍历一个collection的方式)

  含有hasNext(),next(),remove()方法

     

3.4 Set接口

  Set接口是collection的子接口,实现set的容器类中的元素没有顺序,而且不可能重复。Set类中有HashSet()和TreeSet()等

     

  sn.retainAll(s1)//sn与s1求交集

3.5 List接口

  List接口也是collection的子接口,list接口的容器类中的元素是有顺序的,而且可以重复。arrayList(),linkedList()

  Object set(int index,object element)//object返回值为以前的对象

 

    

    

    

     

3.6 comparable

  import java.lang.cmparable  里面只有一个方法 public int compareTo(object obj)

     

3.7 Map接口

  实现Map接口的类用来存储键-值对,键是用来做索引的,所以不能重复(指相互间间equals,因为equals效率较低,所以用hashcode比较,所以重写equals必须重写hashcode)

     

  Map接口(JDK1.5之后满足下面的方法),本来map的方法必须是针对对象的,对于数据必须转换成对象,现在可以直接用1,这是因为JDK1.5支持自动将基础类型转换成对象(打包)和自动将对象转换成基础类型(解包)过程

3.8 泛型

  List<String> c = new ArrayList<String>();//<String>只能装string类型(在API文档中,只要后面跟着<E>的都可以跟<>,这就叫泛型)

  Map<String, Integer> m1 = new HashMap<String , Integer>();//Map里面装了一对东西,所以使用两个类型。

  碰到集合时尽量用泛型,增强程序的可读性,即在定义集合时,定义集合中对象的类型。

3.9 List、Set、Map、数组之间的转换

3.9.1 List和Set转换

  1、List->Set

Set set = new HashSet(new ArrayList())

  2、Set->List

List list = new ArrayList(new HashSet())

3.9.2 List和数组转换

  1、List->数组

List list = Arrays.asList(1,2)

int [] res = (int[])list.toArray(new int[list.size()])

  2、数组->List

List list = Arrays.asList(1,2,3,4)

3.9.3 Set和数组转换

  1、Set->数组

Set set = new HashSet()
List list = new ArrayList(set)

int [] res = (int[])list.toArray(new int[list.size()])

  2、数组->Set

Set set = new HashSet(Arrays.asList(1,2,3,4)) //通过List过渡

3.9.4 Map的相关操作

Map map = new HashMap();   
map.put("1", "a");   
map.put('2', 'b');   
map.put('3', 'c');   

System.out.println(map.keySet());   // 输出所有的key值

System.out.println(map.values());    // 输出所有的value

List list = new ArrayList(map.values());   // 将map的值转化为List   

Set set = new HashSet(map.values());    // 将map的值转化为Set   

 

posted @ 2016-01-14 22:48  likai_liche  阅读(442)  评论(0编辑  收藏  举报