Java-集合详解

数组时大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)
java集合可以存储和操作数目不固定的一组数据。
java集合只能存放引用类型的数据,不能存放基本数据类型。
java集合主要分为三种类型:
Set(集)
List(列表)
Map(映射)
Collection 接口
Collection是最基本的集合接口,声明了适用于Java集合(只包括Set和List)的通用方法。
Set和List都继承了Collection,Map没有

1.Collection接口的方法:

(1)boolean add(Object o):向集合中加入一个对象的引用

    Collection<String> t1 = new ArrayList<>();
    t1.add("Jack");
    t1.add("Merry");
    System.out.println(t1);

运行结果

 [Jack, Merry]

(2)boolean remove(Object o):从集合中删除一个对象的引用

    t1.remove("Jack");
    System.out.println(t1);

运行结果:

[Merry]

(3)int size():返回集合中元素的数目

    System.out.println(t1.size());

运行结果

1

(4)boolean contains(Object o):判断集合中是否持有特定对象的引用

    if (t1.contains("Merry")){
        System.out.println("有Merry");
    }else {
        System.out.println("没有Merry");
    }

运行结果

有Merry

(5)boolean isEmpty():判断集合是否为空

if (t1.isEmpty()){
        System.out.println("是空的");
    }else {
        System.out.println("不是空的");
    }

运行结果

    不是空的

(6)boolean equals(Obejec o):判断两个集合是否相同(比较集合里面的内容)

    Collection<String> t2 = new ArrayList<>();
    t2.add("Jack");
    t2.add("Merry");
    t2.add("Rose");
    t2.add("Tom");

    if (t1.equals(t2)){
        System.out.println("t1和t2相同");
    }else {
        System.out.println("t1和t2不同");
    }

运行结果

t1和t2不同

(7)void clear():删除集合中所有的对象,即不再持有这些对象的引用

    t2.clear();
    System.out.println(t2);

运行结果

[]
2.Interator接口

用来遍历集合中的元素

(1)hasNext():判断集合中元素是否遍历完毕,如果没有,就返回true
------- next():返回下一个元素
a.

    Iterator iterator = t2.iterator();
    while (iterator.hasNext()){
        System.out.println(iterator.next());
    }

运行结果:

Jack
Merry
Rose
Tom

b.

    for (String obj:t2){
        System.out.println(obj);
    }

c.

    for (int i  = 0; i < t2.size(); i++){
        System.out.println(((ArrayList<String>)t2).get(i));
    }

运行结果都一样

3.List(列表)

List的特征是以线性方式存储,集合中可以存放重复对象。
List接口主要实现类包括:
ArrayList():代表长度可以改变的数组。可以对元素进行随机的访问。向ArrayList()中插入与删除元素的速度慢。
对于List的随机访问来说,就是只随机来检索位于特定位置的元素。
List的get(int index)方法放回集合中参数index指定的索引位置的对象,下标从"0"开始。

(1)

    ArrayList<Integer> score = new ArrayList<>();
    score.add(2);
    score.add(4);// 在末尾添加
    score.add(0,1);// 在指定位置插入
    System.out.println(score);

运行结果:

 [1, 2, 4]

(2)访问指定元素

        score.get(1);

(3)修改一个元素

    score.set(0,0);
    System.out.println(score);

运行结果:

 [0, 2, 4]

(4)删除
(a)

    score.remove(0);//删除指定位置的元素
    System.out.println(score);

运行结果

 [2, 4]

(b)

    score.remove((Integer)2);//删除指定的对象
    System.out.println(score);

运行结果:

[4]

(5)将一个集合里面的内容添加到当前集合中

    ArrayList<Integer> c1 = new ArrayList<>();
    c1.add(3);
    c1.add(9);
    c1.add(6);

    score.addAll(c1);
    System.out.println(score);

运行结果:

[4, 3, 9, 6]

(6)取两个集合的交集

    ArrayList<Integer> c2 = new ArrayList<>();
    c2.add(2);
    c2.add(3);
    c2.add(4);
    c2.add(1);
    
    score.retainAll(c2);//取两个集合的交集
    System.out.println(score);

运行结果:

[4, 3]

(7)访问某个对象在集合里面的索引

    ArrayList<Integer> c3 = new ArrayList<>();
    c3.add(1);
    c3.add(2);
    c3.add(3);
    c3.add(1);
    c3.add(2);

    System.out.println(c3.indexOf(1));// 第一次出现的位置
    System.out.println(c3.lastIndexOf(1));// 最后一次出现的位置

运行结果

0
3

(8)将ArrayList转化为普通数组
a:

    Integer[] objects = new Integer[c3.size()];
    c3.toArray(objects);
    for (Integer i:objects){
        System.out.println(i);
    }

运行结果:

 1
 2
 3
 1
 2

b:

    Object[] objects1 = c3.toArray();
    for (Object i:objects1){
        System.out.println(i);
    }

c:

    Iterator iterator = a4.iterator();
    while(iterator.hasNext()){
        System.out.println(iterator.next());
    }

三种方式运行结果相同

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http://www.cnblogs.com/jasonHome/p/5969574.html 结合框架体系应该最...
    shhdjjj阅读 1,252评论 0 0
  • Java集合详解 [if !supportLists]一、[endif]集合的由来 通常,我们的程序需要根据程序运...
    秋刀鱼茶泡饭QAQ阅读 497评论 1 2
  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 844评论 0 2
  • 引言: 每一颗螺丝钉都很重要,差之毫厘谬以千里。 可以直接撸代码,记着点赞:Demo Java集合框架有两个根接口...
    半路自由阅读 844评论 0 1
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,523评论 0 4

友情链接更多精彩内容