首页 > 代码库 > 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); } }
Java中集合类容器初步了解