List、Set、Map集合

集合的概念:
集合类存放于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(重点)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值