Java学习之路(六):集合

集合的由来

  • 数组的长度是固定的,当添加的元素超过了数组的长度,就需要对数组重新定义
  • java内部给我们提供的集合类,能存储任意对象,长度是可以改变的。随着元素的增加而增加,随着元素的减少而减少

数组和集合的区别

  • 数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值
  • 集合只能存储引用数据类型(对象Object),集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成对象  eg:int==>Integer
  • 数组长度是固定的,不能自动增长
  • 集合的长度是可变的,可以根据元素的增加而增长

如果元素的个数是固定的,我们使用数组

如果元素的个数不固定,我们使用集合

集合Collection类:

  • list:有序集合,有索引。存与取的顺序一样,可以重复

    • ArrayList(数组实现)
    • LinkedList(链表实现)
    • Vector(数组实现)
  • Set:无序集合,无索引。存与取的顺序不一样,不可以重复
    • HashSet (哈希算法)
    • TreeSet(二叉树算法)

ArrayList集合中部分数组实现的原理

  eg:有个容量为10的初始化数组,当它不够用的时候,就会自动生成一个1.5倍大的数组,将值重新赋值后,把以前的那个小的数组垃圾回收了

Collection的几个基本方法

  • boolean add(E e)  添加一个元素
  • boolean remove(object o)   移除某一个元素
  • void clear()  清空这个集合
  • boolean contains(Object o)
  • boolean isEmpty()   判断这个集合是否为空
  • int size()   大小
  • toArray()   将集合转化为数组
  • boolean addAll(Collection c1)  将c1添加进来
  • boolean removeAll(Collection c1)  移除this中还有的c1中的所有元素
  • boolean containsAll(Collection c1)  判断this是否包含有c1中的所有元素
  • boolean retainAll(Collection c1)   求并集

遍历一个集合,我们使用迭代器

迭代器是用来遍历集合中的每一个元素的

方法:hasNext()和next()

package lesson3;

//这是一个小例子

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class null03 {

    public static void main(String[] args) {
        Collection c1 = new ArrayList();//这不就是多态?
        c1.add("A");
        c1.add("B");
        c1.add("C");

        Iterator iterator = c1.iterator();
        while(iterator.hasNext()){
            Object o = iterator.next();
            System.out.println(o);
        }

    }

}

原文地址:https://www.cnblogs.com/smiling-crying/p/9339265.html

时间: 2024-10-24 20:26:15

Java学习之路(六):集合的相关文章

我的java学习之路六:java的常用类

一. Number & Math 类方法 下面的表中列出的是 Number & Math 类常用的一些方法: 序号 方法与描述 1 xxxValue()将 Number 对象转换为xxx数据类型的值并返回. 2 compareTo()将number对象与参数比较. 3 equals()判断number对象是否与参数相等. 4 valueOf()返回一个 Number 对象指定的内置数据类型 5 toString()以字符串形式返回值. 6 parseInt()将字符串解析为int类型. 7

Java学习之路(六)

1:包及和访问权限 将类放置到一个包当中,需要使用package “包名” 编译时需要使用 -d 参数  该参数的作用是依照包名生成相应的文件夹 一个类的全民应该是  “包名” + “.” + “类名” 包名的命名规范: 要求包名所有的字母都要小写 包名一般情况下,是你的域名倒过来写 一个包中的类访问另一个包中的类的条件 1:先自己打个包 1:访问类导入包名 2:被访问类必须是公共的 在以上条件下 :如果想要一个类想访问另一个类的属性和方法时,他们必须是公共(public)的 public   

java学习之路之javaSE基础1

<h2>java学习之路之javaSE基础1</h2> <div> ###01.01_计算机基础知识(计算机概述)(了解)* A:什么是计算机?计算机在生活中的应用举例 * 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算机称为裸机.常见的形式有台式计算机.笔记本计算机.大型计算机等. * 应用举例 * 1:科学计算 * 2.数据处理 * 3.自动控制 *

Java学习之路(二)--Thinking in Java

针对昨天Java学习之路(一)--Thinking in Java中的类的静态方法不能访问创建非静态类,给出了将内部类修改成为static静态类,操作方便简单.现在给出第二种不需要添加删除的另一种极为高效的方式.可以将内部类从你所创建的类中复制粘贴到类外,作为一个外部类,在static主方法中就可以创建类的引用了. 源代码如下: ? class test{ int s; char c; } public class test1 { public static class test{ int s;

Java学习之路:1、HelloWorld

似乎每种语言都是从HelloWorld开始的,所以,我的第一个java程序,也应该是这样开始的! 1.配置好jdk后,开始编写HelloWorld.java package second;//这个应该在我的理解就相当于php的命名空间 public class HelloWorld {//如同php中的声明一个类,不过php是不需要加public这样的类型修饰符 public static void main(String[] args){//声明一个方法,不过不懂的是为什么一定要static:

mapxtreme java学习之路(1)——.dwg转.tab再转.gst详细教程

[背景] 因为项目的需要,需要在java web 项目中使用到地图,厂家提供的是dwg格式的地图,而我们采用的是mapxtreme java技术,所以先要把dwg格式的地图转成mapxtreme java可以解析的格式,即gst格式.关于这方面的资料,网上甚少,加上软件难找,中间走了不少弯路.基于mapxtreme java以后可能还要能到,dwg转gst的过程也必不可少,所以在这里整理一下整个转化过程.如果大家有更好的转化方法,欢迎讨论. [环境] windows xp 32 位 的虚拟机.

Java学习之路:2、Mysql 链接与查询

1.事实上我发现有了php的功力在里面,学习java起来还是不是很费劲,只是java就没有面向过程这一说 package second; import java.sql.*;//导入 public class mysql { public static void main(String[] args) throws SQLException{ String driver = "com.mysql.jdbc.Driver";//声明要被导入的类 String dsn = "jd

java学习之路—初级阶段(迷茫的大学)

本人现在大三,三本院校,电子信息专业.大三下学期才开始定位软件方向.真的是越上学越迷茫,真的不知道去干嘛,本专业本身就可以分软硬件两个方向,可我们都要学.最迷茫的时候,一直在玩游戏,因为真的不知道要去干嘛.知道的太少,心态消极,,,,,后来开始上网才知道原来很多人大学生和我一样迷茫,我们真的没了方向.当然也有些人一上大学就知道自己要干嘛,并且一直努力着.有时候真的很羡慕他们,当别人刚开始起步的时候,或许他们已经登上了顶峰,当然也怪自己的愚昧无知啦.好吧,感慨有点多,呵呵. 在网上混了好几天之后,

黑马程序员 【】java学习之路——TCP(三)客户端上传文件到服务器

------- <a href="http://www.itheima.com" target="blank">android培训</a>.<a href="http://www.itheima.com" target="blank">java培训</a>.期待与您交流! ---------- import java.io.*; import java.net.*; class