zoukankan      html  css  js  c++  java
  • Java中集合类容器初步了解

      容器(Collection)

        数组是一种容器,集合也是一种容器

        java编程中, 装其他各种各样的对象(引用类型)的一种东西, 叫容器

        (图书馆里所有的书, 要想管理图书馆里所有的书, 就需要先把这些书放到一个东西里面, 目前掌握的知识来说, 只能是数组, 数组的长度是固定的,

        这就出现 个问题, 数组的长度该定义成多长 ? 长度是不固定的, 因为不知道有多少本书, 这个时候需要这样一种机制: 

        定义一种东西, 长度不固定, 可以随时添加和删除, 这种东西就是Collection, 只要不超出内存, 随便往里添加)

      Collection---接口:

        Set接口

          *HashSet---实现类(以哈希码表为底层的实现机制)

          TreeSet---实现类(以二叉树(一种数据结构)为底层的实现机制)

          没有顺序, 不可以重复(可以互相equals就叫重复)

        !List接口
          *ArrayList---实现类(以数组为底层的实现机制)

          LinkedList---实现类(以链表为底层的实现机制)

          有顺序, 可以重复

          ArrayList(API中说初始容量为10的, 注意这个问题), LinkedList
          有顺序, 可以重复添加
          get
          set(有一个返回值要注意 !)

          add()

          remove(int)

          remove(Object)

          indexOf

          lastIndexOf

        !Map接口(键值对)

          *HashMap---实现

          TreeMap---实现类

          每次往里放的时候都是一对一对的

          HashMap(哈希表做索引), TreeMap(二叉树做索引)
          键值对(键不能重复, 什么叫重复)
          put(为什么有个返回值啊亲 ?)
          get
          remove(为什么也有个返回值啊亲 ?)
          containsKey
          containsValue
          size
          isEmpty
          putAll
          clear

      Collection接口的方法

        Collection接口的使用

          代码实例: eclipse--com.test3

          Collection<String> c = new ArrayList<String>();

          问题: 为什么不直接写ArrayList<String> a = new ArrayList<String>();

          c.add(参数类型必须是Object)

          c.remove方法: 通过判断两个对象是否互相的equals来确定是不是该删除该对象, 自定义的类, 需要自己重写父类的equals方法

          重写equals方法, 也应该重写hashCode方法

          hashCode通常用来做索引, 一个对象通过它的hashCode的值可以找到它在内存中的地址, 所以两个对象如果equals了,

          而且又要作为索引的情况下, hashCode的值必须相等


      练习:使用String[] args在命令行上检测输入的字符串数组各自出现的次数

    package com.maya.test;
    
    import java.awt.List;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Map;
    
    public class Lianxi {
        public static void main(String[] args) {
            Map c =  new HashMap();
            ArrayList l = new ArrayList();
            
            for(int i=0; i<args.length;i++){
                if(c.get(args[i])==null){
                c.put(args[i], 1);
                }else{
                    int valu = (int)c.get(args[i])+1;
                    c.put(args[i], valu);
                }
            }
            System.out.println(c);
        }
    }
  • 相关阅读:
    LR 场景设置
    win7 快捷键
    P1903 [国家集训队]数颜色 / 维护队列(莫队区间询问+单点修改)
    A
    P1494 [国家集训队]小Z的袜子(莫队)
    P2709 小B的询问(莫队入门)
    G
    #6285. 数列分块入门 9(区间的最小众数 离散化+数列分块)
    #6284. 数列分块入门 8(区间询问等于一个数 cc 的元素,并将这个区间的所有元素改为 c)
    #6283. 数列分块入门 7(区间乘法,区间加法,单点询问)
  • 原文地址:https://www.cnblogs.com/bekeyuan123/p/6896777.html
Copyright © 2011-2022 走看看