专栏首页禁心尽力Java Collection知识总结

Java Collection知识总结

首先说说java中常用的集合容器:ArrayList,LinkedList,Vector,HashMap,Hashtable,HashSet,TreeSet。【就个人认为】

java集合容器本人理解为2大类:一类是诸如List和Set集合,另一类是诸如Map集合。

【ArrayList集合】:

1.该集合中可以存放重复元素;

arraylist.add(new goods("10010","惠普笔记本",5529));
arraylist.add(new goods("10010","惠普笔记本",5529));
arraylist.add(new goods("10011","小米手机",2999));

2.获取该集合中所有元素内容时,可以通过for循环遍历;

for(int i=0;i<arraylist.size();i++){
            goods temp1 = (goods)arraylist.get(i);       //注意:获取集合中的对象时,类型强制转换
            System.out.println("__编号:"+temp1.getNo()+"__名称:"+temp1.getName()+"__价格:"+temp1.getPrice());
        }

3.在该集合中如何查找某个具体对象?通过传入对象的某个属性值来比较;

//根据某个员工的姓名查询该员工的信息
    public void showStaff(String name){
 //遍历整个集合
        for(int i=0;i<arraylist.size();i++){
  //取出员工对象
            Staff staff =(Staff)arraylist.get(i);         //类型强制转换
  //比较员工姓名,输出详细信息
            if(staff.getName().equals(name)){
                System.out.println("姓名"+name+"的薪水是:"+staff.getSalary());
            }
        }
    }

【LinkedList集合】:

1.该集合中也可以存放重复元素;

2.该集合提供元素存放时的数据结构,先进先出[addList()]和先进后出[addFrist()];

3.该集合提供一次性删除集合中所有的元素[removeAll()];

4.获取该集合中所有元素内容时,可以通过for循环遍历;

for(int i=0;i<linkedlist.size();i++){             goods temp1 = (goods)linkedlist.get(i);            //注意:获取集合中的对象时,类型强制转换             System.out.println("__编号:"+temp1.getNo()+"__名称:"+temp1.getName()+"__价格:"+temp1.getPrice());         }

【HashMap集合】:

1.该集合中不允许存在键重复的元素,如果用户在添加键相同而值不同的对象时,容器会自动覆盖原先存在键的值【也就是说该集合中的键是惟一的】;

hashmap.put("30010", new goods("30010","无线鼠标",545.65f));
hashmap.put("30010", new goods("30010","覆盖",0.001f));    //注意:30010对应的值会覆盖上面30010对应的值
hashmap.put("30020", new goods("30020","无线键盘",984.23f));

2.该集合在获取集合内所有的对象时,采用迭代器的方法来获取;注意不能用for循环遍历;

Iterator iterator = hashmap.keySet().iterator();
        while(iterator.hasNext()){        //方法hasNext()就是判断该集合中是否还有下一个元素
 //取出key
            String key = iterator.next().toString();         //将取出的key转化为字符串类型的
            goods goods2 = (goods)hashmap.get(key);     //通过键找到对象,类型强制转换
            System.out.println("编号:"+goods2.getNo()+"__名称:"+goods2.getName()+"__价格:"+goods2.getPrice());
 
        }

3.在该集合中如何查找某个具体对象?就是通过键来查找;

//根据商品编号判断该商品是否存在;若存在,获取该商品的属性值
        if(hashmap.containsKey("30010")){      //根据集合中元素的键来判断该元素是否存在
            System.out.println("该商品存在。");
            goods goods1 = (goods)hashmap.get("30010");            //获取商品对象,类型强制转换
            System.out.println("该商品的编号是:"+goods1.getNo());
            System.out.println("该商品的名字是:"+goods1.getName());
            System.out.println("该商品的价格是:"+goods1.getPrice());
        }else{
            System.out.println("该商品不存在。");
        }

【HashMap和Hashtable的区别:】

1.同步性;HashMap是异步的,而Hashtable是同步的。

2.是否存放NULL;HashMap可以存放NULL键和NULL值,而Hashtable不可存放NULL键和NULL值,在运行时会报异常。

【注意误区:】

一);

在比较2个对象的内容是否相等,不能用if(Object1==Object2){}的思维来完成,因为该思维方式是比较这俩个对象在内存中的地址,无论如何是不想等的,就算这俩个对象的内容是一致的,它返回的值依然是false,原因是这俩个对象在内存中的存放位置是不同的。应该用equals()方法来完成,具体的通过一个例子来演示:

String str1 = new String("abc");
String str2 = new String("abc");
if(str1 == str2){
  System.out.println("不相等");                //这句话是不可能输出的,因为在这儿比较的是它们的内存地址,它们的地址是不相同的

}
if(str1.equals(str2)){
  System.out.println("相等");               //这句话成功打印,因为在这儿比较的是它们的内容值,它们的值是完全一致的

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mybatis_基础篇

    一、认识mybatis:     MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software founda...

    赵小忠
  • Jsp中格式化时间戳的常用标签

      首先关于时间格式化的问题,前不久在公司开发一套数据录入系统,这其中就无时不刻不从数据库拿数据,然后进过一系列处理最后渲染页面,刚开始我习惯用jstl的标签库...

    赵小忠
  • 下载安装ActiveMQ(消息队列)

    安装步骤: 第一步、安装jdk环境,因为ActiveMQ是使用java语言编写。 第二步、将下载好的activemq压缩包上传至Linux系统,进行解压。 第三...

    赵小忠
  • Java中获取类加载路径和项目根路径的5种方法

    https://www.cnblogs.com/franson-2016/p/6163422.html

    XING辋
  • 获取MP3信息

      很多时候,我们有必要的到一些歌曲的信息,比如歌手的专辑,歌手名 歌曲名,下面就是java写的获取MP3歌曲信息 首先加入 jid3lib-0.5.4.jar...

    py3study
  • Java 持久化之 -- IO 全面整理(看了绝不后悔)

    IO包括输入流和输出流,输入流指的是将数据以字符或者字节形式读取到内存 分为字符输入流和字符输入流

    房上的猫
  • Java反射从放弃到入门

    Java反射特性提供了在运行时可以动态访问和修改类和实例内部的状态的功能。反射是Java语言里面一个高级的话题之一,使用反射我们可以在运行时轻松的内省一个类,接...

    我是攻城师
  • Java中的时间和日期(三):java8中新的时间API介绍

    由于java7及以前的版本对时间的处理都存在诸多的问题。自java8之后,引入了新的时间API,现在对这些新的API及其使用进行介绍。

    冬天里的懒猫
  • java代码快

    IT故事会
  • JAVA 集合类小结

    而go里面并没有集合,而是叫数组,切片和键值对。数组同样长度固定,切片键值对长度不固定,键值对是k-v结构。

    ydymz

扫码关注云+社区

领取腾讯云代金券