JAVA集合

原创 2016年05月30日 17:30:19
集合框架主要用来解决长度,类型可变问题,还可以根据key来获取内容。

主要分为两块: Collection,map

Collection 可以存放一组无序,可重复的数据,是一个接口

Collection 下面有2个子接口:List 和Set;

List存放一组有序,可重复的数据

Set 存放一组无序,唯一的数据

List集合有2个实现类 ArrayList和 LinkedList

ArrayList: 底层封装以数组实现,分配的是一块连续的内存空间,读取数据效率高,增删操作偏低

LinkedList: 底层以分装链表实现,分配的是不连续的内存空间,读取数据效率低,
                    增删操作效率高,相对于ArrayList ,多了首位元素的操作

Iterator 迭代器。在Collection接口下所有的对象,可以用Iterator 迭代器。

Iterator<String> ite= list.iterator();
while(ite.hasNext()){
   String str= ite.Next();
syso(str);

ArrayList 另外2种迭代:
 for(int i=0;i<list.size();i++){
syso(list.get(i));

for(String str:list){
syso(str);

list.contains(a); 判断集合中是否包含元素a;
list.indexOf(a);从前往后获取元素a下标


Set 
HashSet的原理: 
存放:1.调用hashCode()方法,获取哈希码值,判断是否存在这个之
           2.如果存在,调用equals()方法(其实在这之前会先用==判断,相等就返回false),
              判断两个对象是否相等,如果相等,添加失败,如果不等,把对象加入HashSet对象中。
            3.如果第一步的哈希码值不存在,直接把对象加入HashSet里面
获取:1,先调用hashCode()方法,获取哈希码值,根据哈希值调用hash()方法,获取存储索引,
            然后根据索引找到对应的数据;


HashSet可以存放多个对象,但是不能存放相同的对象。
这里我们也可以人为改变判定对象相同的条件,如果希望按照我们的方式来判定对象是否相同,
需要重写hashCode()方法和equals()方法。


Map                                
通过键值(key-value)对的形式来存储数据。
map.put(a,b);将a和b存入带map里面
map.get(a);得到key值a 对应的value
map.containsKey(a);集合中是否包含key
map.containsValue(a);集合中是否包含value
Set set=map.keySet();得到map集合中所有的key的集合
Iterator ite= set.iterator();
while(ite.hasNext()){
    Object obj=iter.next();//迭代集合set中的key,得到key
    Object ob=map.get(obj);//通过key得到value}

map里面的key可以是任意类型,建议使用String ,value 也可以是任意类型
map里面的key可以重复,当key重复是,后存入的数据会覆盖前面的数据,value可以重复
map里面key可以为null,但是只能有一个,多个时候,后面会覆盖前面的,value可以多个为null
map中的key在底层可以理解为一个set集合

HashMap的原理
存储:1,判断key是否为空,如果为空,把指定的value存到首位
            2.如果key不为空,先根据key的hashCode来计算得到hash值
            3.在根据hash值来获取数组的下标,如果该下标对应的位置已经有数据了,替换该数据

读取:1,根据key 的hashCode值,调用hash(),得到一个hash值
            2,再根据hash值获取数组下标(通过indexof()方法),再根据数组下标从数组中获取元素

map 3种迭代
1.取出所有的key,然后分别根据key来获取每一个value
Set<String> set = map.keySet();
Iterator<String> iter =set.iterator();
while(iter.hasNext()){
       String key=iter.next();
        String value=map.get(key);
syso(key+value);

2.第二种方式:通过values()方法,直接得到所有的value
Collection<String> list= map.values();
    Iterator<String> iter=list.iterator();
while(iter.hasNext()){
    String value=iter.next();
syso(value);

3.通过一个内部类Entry来获取所有的key和value

Set<Entry<String ,String>> set=map.entrySet();
Iterator<Entry<String,String> ite=set.iterator();
while(iter.hasNext()){
    Entry<String,String> entry=iter.next();
    String key=entry.getKey();
    String value= entry.getValue();
syso(key+value);

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java编程模式集合(上)

  • 2015-06-18 16:22
  • 456KB
  • 下载

java中集合排序

Java 集合框架总结与巩固

集合接口概要 各接口及实现类说明 Collection since 12 List since 12 Map since 12 SortedMap since 12 NavigableMap sinc...

数据结构和Java集合框架

  • 2016-04-29 14:52
  • 64.60MB
  • 下载

java基础之集合类

一、Java集合类是什么?java集合类型主要有哪些?首先看一张概念图,这里囊括了集合类的大部分关系及内容 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集...

Java集合实例

  • 2013-11-11 16:55
  • 6.36MB
  • 下载

JAVA中常用的集合类型

  • 2013-06-05 16:39
  • 59KB
  • 下载

java集合框架Stack栈

Stack栈是一个简单的类,操作实现均在父类Vector中完成!!!public class Stack extends Vector { /** * 先进后出 * Vec...

java集合框架

  • 2012-12-13 09:13
  • 260KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)