今天的收获

首先说一下集合和数组的异同,集合和数组一样,也是存储数据的容器。区别如下:

1. 数组长度固定,集合长度可变。

2. 数组能存基本数据类型,也能存引用数据类型。集合只能存引用数据类型。

3. 数组只能存单一类型,集合能存任意引用类型。

集合下有两大接口,分别是List和Set。List下的子类有ArrayList,Vector,LinkedList。由于这三个类的使用相差不大,所以以ArrayList为例说一下使用的方法。

List:存入顺序和取出顺序一致,存储的元素可以重复。有序、可以重复。

ArrayList:底层是Object数组。

1. 增加:add 及其重载

2. 删除:remove(index)、remove(Object)、clear()

3. 修改:set(index ,Object)

4. 查找:contains():依据equals方法来判断是否包含该元素。indexOf。

5. 输出:for循环:size()、get(index).

特殊注意的地方:

1. set返回的该位置上原先的元素。

2. remove(Object): 移除此列表中首次出现的指定元素(如果存在)。

泛型:为了规范元素类型。避免强制类型转换。

Iterator:迭代器,用于取出集合中的元素

迭代器使用注意:

1. 要定义在循环的外面。

2. hasNext()方法不移地指针。next()方法移动指针。

3. 每一个迭代器只能迭代一次。

package day09;
import java.util.ArrayList;
import java.util.Iterator;
public class TestArrayList {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("one");//增加元素one
list.add(3+"");//增加元素2,由于使用了泛型所以得加""
list.add("three");
list.add(1, "two");//在下标1的地方增加元素two
System.out.println(list);//输出list中的元素
System.out.println(list.remove(2));// 显示被删除的下标的元素
System.out.println(list.remove("two"));// 删除列表中首次出现的元素,如果存在返回true
//      list.clear();//移除此列表中的所有元素
String i = list.set(1,"two");// 返回结果是原先位置上的值
System.out.println(i);
System.out.println(list);
boolean f = list.contains(new String("one"));//如果此列表中包含指定的元素,则返回 true
System.out.println(f);
int index = list.indexOf("ttwo");
System.out.println(index);//返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1
for(int j=0;j<list.size();j++){ //返回此列表中的元素数
Object o = list.get(j);// Object o = new String("abc");
System.out.println(o);
}
Iterator<String> it = list.iterator();
while(it.hasNext()){//如果仍有元素可以迭代,则返回 true
System.out.println(it.next());//返回迭代的下一个元素
}
}
}

下面开始说set接口,主要说一下它的HashSet类和TreeSet类。

Set:无序、元素唯一。

HashSet:底层hash表。

保证元素唯一通过hashcode和equals方法。

对于HashSet来说,判断元素是否存在,或者删除元素,都是靠hashcode和equals。

对于ArrayList来说,判断元素是否存在,或者删除元素,都是靠equals。

package day09.set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
//HashSet会去掉重复,输出的时候是无序的,结果如下
//[one, two, five , four, three]
//one two five  four three
//one two five  four three
public class TestHashSet {
public static void main(String[] args) {
Set<String> set =  new HashSet<String>();
set.add("one");
set.add("two");
set.add("one");
set.add("three");
set.add("four");
set.add("five ");
set.add("five ");
System.out.println(set);
Iterator<String> it = set.iterator();
while(it.hasNext()){
String s = it.next();
System.out.print(s+" ");
}
System.out.println();
for(String s : set){
System.out.print(s+" ");
}
}
}

TreeSet:底层二叉树。

自动排序。依据的就是compareTo方法,要求存入其中的元素具有可比较性。

package day09.set;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
//TreeSet会自动排序,结果如下
//[A, B, C, D, E]
public class TestTreeSet {
public static void main(String[] args) {
Set<String> set = new TreeSet<String>();
set.add("E");
set.add("B");
set.add("D");
set.add("A");
set.add("C");
System.out.println(set);
//      Iterator<String> it = set.iterator();
//      while(it.hasNext()){
//          System.out.println(it.next());
//      }
}
}

转载于:https://blog.51cto.com/libaiqiang/1257598

Java集合的概念及其相关类的简单使用相关推荐

  1. Java:封装的概念,UML类图,构造方法,this关键字,static关键字,方法重载,包package

                     oop三大特性:封装,继承,多态 oop一般指面向对象程序设计(一种计算机编程架构) 一.封装的概念:    将东西包在一起,然后以新的完整形式呈现出来       ...

  2. Java集合中线程安全的类

    集合中线程安全的类都是jdk1.1中的出现的.在jdk1.2之后,就出现许多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多了个同步化机制(线程安全),因为效率 ...

  3. Java集合List转树结构工具类

    此版本太累赘,请转到函数版:https://blog.csdn.net/wenxingchen/article/details/115749782?spm=1001.2014.3001.5501 业务 ...

  4. 对java中匿名对象和匿名类的简单理解

    首先在写完这篇博客时感谢几位作者的文章: https://www.cnblogs.com/txbblog/p/10364558.html https://blog.csdn.net/chengqium ...

  5. Java集合框架:Collections工具类

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  6. java定义一个course类,java集合,定义两个类,学生Student和课程Course,课程被学生选修,请在课程类中提供以下功能:...

    Course类: package com.goodprg.d1207.que1; import java.util.ArrayList; import java.util.Collections; i ...

  7. Java集合的框架和实现类

    2019独角兽企业重金招聘Python工程师标准>>> 集合代表了一组对象(和数组一样,但数组长度不变,而集合可变:数组的元素可以是基本数据类型,但集合不可).Java中的集合框架定 ...

  8. Java集合框架:Arrays工具类

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  9. (转载)java分布式的概念及相关模块概念总结

    转载地址:https://blog.csdn.net/qq_25078673/article/details/80489020 1.分布式是什么? 分布式是一种架构模式,是将公有模块进行提取,构建成单 ...

最新文章

  1. git push代码时的‘git did not exit cleanly (exit code 1)‘问题解决
  2. php多图片上传并回显,如何用input标签和jquery实现多图片的上传和回显功能
  3. 云服务centos搭建jupyter notebook并通过外网访问
  4. android往天气接口里面传城市,Android使用中国天气网API数据通过城市名称获取天气情况...
  5. 【kafka】kafka kerberos Cannot locate KDC Unable to locate KDC for realm
  6. 常用排序+查找算法时间复杂度大集合
  7. 常见iPhone设备尺寸及分辨率(持续更新)
  8. erp 维护费 要交吗_ERP系统实施费用!
  9. 推荐Notepad插件格式化Sql代码,开发利器。
  10. 【Tiny4412】Tiny4412开发板介绍
  11. (Python)计算器的设计与实现
  12. linux降低交叉编译器版本,嵌入式ARM+Linux 多個不同版本的交叉編譯器的切換方法...
  13. 感觉媒体、表示媒体、表现媒体、存储媒体和传输媒体
  14. 利用特性、泛型、反射生成sql操作语句(待修改
  15. 微信开方平台微信管理员重置
  16. oracle备份显示要启动介质,RMAN备份,出现介质无法恢复的情况
  17. java audit模块实现_Linux安全审计功能的实现——audit详解
  18. cesium 街景 vs 三维视图 显卡 知识点.txt
  19. 【curl: (52) Empty reply from server】
  20. 华为实验24-vRRP基本配置

热门文章

  1. AI玩填字游戏,赢得全国锦标赛冠军!官方:不是人,没有奖金和名次
  2. 粒子物理标准模型错了?电子“表哥”磁性超出理论预计,物理学家找到未知粒子存在证据...
  3. 中国农业科技领域最大一笔融资来了:极飞科技拿下12亿投资,百度&软银领投...
  4. 英特尔“包抄”英伟达:oneAPI对标CUDA、为《王者荣耀》云游戏提供GPU
  5. 没用上5G的One World演唱会,视频会议软件Zoom和思科WebEX立功了
  6. 美国AI语音大牛转投小米!因政治正确遭名校JHU开除,其后怒拒FB百万美元合同...
  7. 阿里AI再揽2员大将:挖角高通、360,年薪百万美元
  8. 谷歌推网页爬虫新标准,开源robots.txt解析器
  9. Linux 下文件系统权限控制及管理
  10. ppk on JavaScript第二章:背景(完结篇)