集合

7.30学习心得

1. 集合与数组的区别

(1)JAVA集合可以存储和操作数目不固定的一组数据,数组定义时就规定了大小;

(2)JAVA集合只能存放引用类型的数据,不能存放基本数据类型。

2. 在Java 2的Collections框架中,主要包括两个接口及其扩展和实现类:Collection接口和Map接口。

Collection接口存储一组对象,Map接口则存储一些关键字/值对。

3. JAVA集合主要分为三种类型

Set(集) List(列表) Map(映射)

  • List、Set、Map共同的实现基础是Object数组。

  • List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引来访问List中的元素,List中的元素可以是重复的。常用的有:LinkedList 和 ArrayList 。

  • Set中的对象不按特定的方式排序,并且没有重复对象,支持数学中的集合操作,如:交、并。常用的有:HashSet 。

  • Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象,提供按键对象查找值对象。Map没有继承于Collection接口。常用的有:HashMap 。

4. JAVA集合框架继承关系(了解)

继承关系

5. Set 集合

Set

Set 运用实例:

public static void main(String[] args) {

        //声明set集合
        Set<String> set = new HashSet<String>();

        //添加数据
        set.add("a");
        set.add("b");
        set.add("c");

        //遍历查询
        for (String str : set) {
            System.out.println(str);
        }

        for(int i = 0; i < set.size(); i++)
        {
            System.out.println(set);
        }

        //删除数据
        set.remove("a");
        System.out.println(set);
public static void main(String[] args) {

        Set<String> set = new HashSet<String>();

        set.add("a");
        set.add("b");
        set.add("c");

        for (String str : set) {
            System.out.println(str);
        }

        for(int i = 0; i < set.size(); i++)
        {
            System.out.println(set);
        }

        set.remove("a");
        System.out.println(set);

}

6. Map 集合

Map

Map 运用实例:

public static void main(String[] args) {

        //声明Map集合
        HashMap<String, String> map = new HashMap<String, String>();

        //添加数据(前面是key(不可重复),后面是value)
        map.put("1", "a");
        map.put("2", "b");
        map.put("3", "c");

        //删除数据(根据key)
        map.remove("2");

        //遍历数据
        //第一种
        for(String str: map.keySet())
        {
            System.out.println(str+":"+map.get(str));
        }

        //第二种
        for (Entry<String, String> entry : map.entrySet()) 
        {
            System.out.println(entry.getKey()+":"+entry.getValue());
        }

        //第三种
        for(String string : map.values())
        {
            System.out.println(str);
        }

        //第一种方法的迭代器
        Iterator<String> iteratorSet=map.keySet().iterator();
        while(iteratorSet.hasNext())
        {
            String string=iteratorSet.next();
            System.out.println(string+":"+map.get(string));
        }

        //第二种方法的迭代器
        Iterator<Entry<String, String>> iterator=map.entrySet().iterator();
        while(iterator.hasNext())
        {
            Entry<String, String> entry=iterator.next();
            System.out.println(entry.getKey()+":"+entry.getValue());
        }

}

7. List 集合

  • ArrayList(数组类型),方便从中提取数据进行操作。若超出集合定义大小,许耗费0.75倍原有内存大小作为缓冲区,GC不能及时发现进行处理,造成不必要的内存浪费。

  • LinkedList(链式类型),任意找地方插入数据,用指针指向,方便存储数据。但是若想提取数据进行操作需要遍历全部数据,过于麻烦。

List

ArrayList 运用实例:

public static void main(String[] args) {

        //声明ArrayList集合
        List<String> list = new ArrayList<String>();

        //添加数据
        list.add("c");
        list.add("b");
        list.add("d");
        list.add("a");

        //遍历数据
        for (String str: list) {
            System.out.println(str);
        }

        for(int i=0; i<list.size(); i++)
        {
            System.out.println(list.get(i));
        }

        //删除数据
        list.remove(2);

        for(int i=0; i<list.size(); i++)
        {
            System.out.println(list.get(i));
        }

}

LinkedList 运用实例:

public static void main(String[] args) {

        //声明LinkedList集合
        List<String> list = new LinkedList<String>();

        //添加数据(字母顺序是按照ASCII码排序,数字从小到大排序)
        list.add("吧");
        list.add("吃");
        list.add("啊");

        //遍历数据
        for (String str : list) {
            System.out.println(str);
        }

        //删除数据
        list.remove(1);

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

}

8. 作业

1、创建一个List,在List 中增加N个工人,工人信息存储在Map中,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
……
2、利用for 循环遍历,打印List 中所有工人的信息
3、利用迭代遍历,对List 中所有的工人信息进行遍历。
4、把所有人的姓名存储在Set中,遍历输出所有姓名。

public static void main(String[] args) {

        List<Map<String, String>> list = new LinkedList<Map<String,String>>();
        Map<String, String> map1 = new HashMap<String, String>();
        Map<String, String> map2 = new HashMap<String, String>();
        Map<String, String> map3 = new HashMap<String, String>();

        map1.put("name","zhang3");
        map1.put("age", "18");
        map1.put("pay", "3000");

        map2.put("name","li4");
        map2.put("age","25");
        map2.put("pay","3500");

        map3.put("name","wang5");
        map3.put("age","22");
        map3.put("pay","3200");

        list.add(map1);
        list.add(map2);
        list.add(map3);

        for(int i = 0; i < list.size(); i++)
        {
            System.out.println("第" + (i+1) + "个人信息:");
            System.out.println("name:" + list.get(i).get("name"));
            System.out.println("age:" + list.get(i).get("age"));
            System.out.println("pay:" + list.get(i).get("pay"));
        }

        System.out.println("---------------------------------");

        Iterator<Map<String, String>> iterator = list.iterator();

        while(iterator.hasNext())
        {
            Map<String, String> m = iterator.next();
            System.out.println("学生信息:");
            System.out.println("name:" + m.get("name"));
            System.out.println("age:" + m.get("age"));
            System.out.println("pay:" + m.get("pay"));
        }

        System.out.println("---------------------------------");

        Set<String> set = new HashSet<String>();

        set.add(map1.get("name"));
        set.add(map2.get("name"));
        set.add(map3.get("name"));

        for (String str : set) {
            System.out.println("name:" + str);
        }

}

结果

扩展:

  • 开发环境:IDEA

  • 分析了当前就业形势,多写代码,加油追赶吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值