java集合框架初学 ——List、Set、Map

List 的用法

package book;
import java.util.*;
public class Book {
    public static void  main(Strng[] args){
        //用list的常用操作写书类
        //创建一个集合实例
        List bookMessage = new ArrayList();
        //创建成员
        String title1 = "书名:《海贼王》\t"+"价格:"+"¥"+10+"\t"+"页数:"+100;//书名
        String title2 = "书名:《七龙珠》\t"+"价格:"+"¥"+9+"\t"+"页数:"+80;;
        String title3 = "书名:《死神》\t"+"价格:"+"¥"+8+"\t"+"页数:"+90;;

        bookMessage.add(title1);
        bookMessage.add(title2);
        bookMessage.add(title3);
        //遍历数组,Java的特有方法
        System.out.println("\n");
        int k = bookMessage.size()/2;
        System.out.print("新店开张,目前只有"+k+"本书\n下面是书单");
        for(Object i:bookMessage){//不管集合中的元素是什么类型的,
            //都是用object代替
            //这里的i是元素,不是下标
            System.out.println(i);
        }
    }
}

一、对比Set和List(不同点)
1、List是以数组为模板,其优点是查找比较方便,缺点是插入删除比较累。而Set是以链表为模板的,优点就是插入删除比较方便,但是要是查找的话,得从链表的头部开始查。
2、List是有序的,而Set是无序的;
3、List的元素允许重复,而Set的元素不允许重复。
二、对比Set和List(相同点)
1、添加元素时,都是 add、撤销元素时都是 remove
2、遍历方式也相同
3、常见实现类都是 Hash 用法。

Set 的用法

package SetExe;

import java.util.HashSet;
import java.util.Set;

/**
 * Created by 92407 on 2017/4/17.
 */
public class SetExe {
    public static void main(String[] args) {
        Set personName = new HashSet();
        /**不推荐使用
         *
         *  HashSet personName = new HashSet();
         *
         *  的方法,虽然能编译
         *  但大神们都是用的第一种方法
         *
         * */

        personName.add("tingting");
        personName.add("lili");
        personName.add("juanjuan");

        //遍历
        Object[] os = personName.toArray();/**创建的  对象名.toArray*/
        for(int i = 0;i<os.length;i++){
            System.out.println(os[i]);

        }

    }

}

、、


三、Map
Map接口:
1、Map中的元素都是成对出现的,以键值对映射的形式存储和管理数据。
2、每个对象都有一个唯一的key值,每个key对应一个value ,通过key可以实现对value对象的访问。
3、key和value都为Object对象。
4、Key对象唯一不重复,value对象允许重复。
5、Map接口常用实现类:HashMap,Hashtable。



Map 的用法

package MapExe;

import java.util.HashMap;
import java.util.*;

/**
 * Created by 92407 on 2017/4/17.
 */
public class MapExe {
    public static void main(String[] args) {

        //Map 是一个接口,而 HashMap 是一个对象实例 ,可以用来创建一个对象
        HashMap personName = new HashMap();
        /**不能使用 Map personName = new Map<>(); 的方法
         * 因为 Map 是接口,是抽象的,不可被实例化
         * */
        /**
         * Map 以接口的形象出现,其都是成对出现的,
         * 以 # 键值 对 映射 的形式存储和管理数据的
         * 每一个对象都有其唯一的 key 值
         * 而每一个 key 值,都有唯一一个 value 与其对应
         * 既 对象——>key——>value
         * */
        personName.put(1,"zhao");
        personName.put(2,"qian");
        personName.put(3,"qian");
        personName.put(4,"sun");
        personName.put(5,"li");
        personName.put(6,"zhou");

        //遍历 key 的值
        Object[] keys = personName.keySet().toArray();//toArray 的意思是把它转化成字符串类型
        for(int i = 0;i<keys.length;i++){
            System.out.println("Key: "+keys[i]);
        }
        System.out.println();

        //遍历  value 的值
        Object[] values = personName.values().toArray();
        for(int i = 0;i<values.length;i++){
            System.out.println("value: "+values[i]);
        }
        System.out.println();

        //遍历所有映射
        Object[] entrys = personName.entrySet().toArray();
        for(int i = 0;i<entrys.length;i++){
            Map.Entry entry = (Map.Entry)entrys[i];
            System.out.println(entry.getKey()+":"+entry.getValue());        
        }  
        System.out.println();            
    }
}

Map 是编号和实例同时访问的一种表,比较方便
Map的遍历方法如下:
遍历所有的key值

Object[]  keys = map.keySet().toArray();
for(int i=0;i<keys.length;i++){
    System.out.println("key: "+keys[i]);

遍历所有的value值

Object[] values = map.values().toArray();
for(int i=0; i<values.length; i++){
    System.out.println("value: "+values[i]);
}

遍历所有的entry值

//entry的遍历比较特殊
Object[] entrys = map.entrySet().toArray();
for(int i=0;i<entrys.length;i++){
    Map.Entry entry = (Map.Entry)entrys[i];
    /**上面的这个entrys已经被定义为Object类型,是所有类的父类,所以在创建实例时,不能直接创建:(子类的对象可以赋值给父类,而父类的对象不能赋值给子类,要是非要赋值,那就强制转换),这儿所加上的(Map.Entry就是强行转换)*/
    System.out.println(entry.getKey()+“ : "+entry.getValue());
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值