您的位置:首页 > 其它

List、Set、Map集合

2017-05-27 10:10 267 查看
集合的概念:

集合类存放于java.util包中。
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
集合类型主要有3种:set(集)、list(列表)和map(映射)。

集合和数组非常相似,但是数组有固定的长度,而集合没有,集合的长度是无限大的,而且集合的大小是随着集合内容的增大而增大的。

在说集合之前需要补充一下泛型的概念:
   泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。

Java语言引入泛型的好处是安全简单。

  泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,以提高代码的重用率。

接下来我们用代码来简单讲一下泛型的作用:

package com.zking.entity;

public class Person<E,V> {

    private E pid;//将pid定义为泛型

    private String pname;

    

    private V money[];

    

    public V[] getMoney() {

        return money;

    }

    public void setMoney(V[] money) {

        this.money = money;

    }

    public E getPid() {

        return pid;

    }

    public void setPid(E pid) {

        this.pid = pid;

    }

    public String getPname() {

        return pname;

    }

    public void setPname(String pname) {

        this.pname = pname;

    }

}

package com.zking.test;

import com.zking.entity.Person;

public class TestFan {

     public static void main(String[] args) {

         Person<String, ?> person=new Person<String, Integer>();//在泛型中放入?通配符,new的时候就可以放入任意类型

        

     }

    

}

1.测试map

package com.zking.test;

import java.util.Collection;

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

import java.util.Map.Entry;

public class TestMap {

    //键值对

    public static void main(String[] args) {

        Map<String, Object> map=new HashMap<String, Object>();

        map.put("A", "AAAA");

        map.put("2", "2222");

        map.put("3", "3333");

        map.put("王", "大小王");

        

        //遍历

        //01.获取所有的键,再根据键获取值

//        Set<String> strings=map.keySet();

//        for (String string : strings) {

//            System.out.println(string+":"+map.get(string));

//        }

        

        //02.获取所有的值

//        Collection<Object> collection=map.values();

//        for (Object object : collection) {

//            System.out.println(object);

//        }

        

        //03.获取键和值(一个一个)

        Set<Entry<String, Object>> entries=map.entrySet();

        for (Entry<String, Object> entry : entries) {

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

        }

    }

}

2.测试set

package com.zking.test;

import java.util.HashSet;

import java.util.TreeSet;

public class TestSet {

    public static void main(String[] args) {

        //Set

        //不能添加重复

        //无序(放进去的顺序和取出来的顺序不一样)

        HashSet<String> hashSet=new HashSet<String>();

        hashSet.add("A");

        hashSet.add("C");

        hashSet.add("B");

        hashSet.add(null);

        //HashSet可以加空值

        for (String string : hashSet) {

            System.out.println(string);

        }

        

        

        //TreeSet不可以加空值

//        TreeSet<String> treeSet=new TreeSet<String>();

//        treeSet.add("A");

//        treeSet.add("C");

//        treeSet.add("B");

//        treeSet.add(null);

//        for (String string : treeSet) {

//            System.out.println(string);

//        }

    }

}

3.测试List

package com.zking.test;

import java.util.ArrayList;

import java.util.LinkedList;

import java.util.List;

public class TestList {

    public static void main(String[] args) {

//        List Set Map

        //List

        //可以重复

        //有序

//        List<String> list=new ArrayList<String>();

//        list.add("A");

//        list.add("B");

//        list.add("C");

//        list.add("A");

//        System.out.println(list.size());

//        

//        for (String string : list) {

//            System.out.println(string);

//        }

        

        

        LinkedList<String> list=new LinkedList<String>();

        list.add("A");

        list.add("B");

        list.add("C");

        list.add("A");

        

        list.addFirst("头");//在集合的头部加入

        list.addLast("尾");//在集合的尾部加入

        

        list.removeFirst();

        

        for (String string : list) {

            System.out.println(string);

        }

        

    }

}

4.最后我们来总结一下

List

    <1>ArrayList

        数组结构,查询快,增删改慢

    <2>LinkedList(特有方法)

        链表结构,查询慢,增删改快

    <3>Vector

        增删改查慢

Set

     <1>HashSet

     <2>TreeSet

Map(重点)

     <1>HashMap  可以加空值(无序)

     <2>HashTable  不能加空值(无序)

     <3>TreeMap   可以加空值(有序)

     <4>迭代Map(重点)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: