2.对象容器(1)

  今天学习一下Java里面的一些容器的基本功能,今天先来Arraylist。

一、Arraylist

  容器类主要是为了存放一些按某些方式排列的对象,arraylist是一种容器,相对数组那种静态分配存储空间,容器动态分配空间更为节省,而且通常容器内部有固定套路的方法来实现数据的插入、删除、修改等等操作,非常方便,而且效率通常很高。一般格式:

  容器类型<元素类型>(例如Arraylist<String>)

1.创建(举例):

ArrayList<String> k=new ArrayList<String>();

2.添加元素:

    String s="ff";
int index=1;
k.add(s);
k.add(index,s);//表示在第一个位置插入s,注意索引若为不存在的数会出错

3.获取ArrayList中元素的个数

    int size=k.size();

4.读取元素

    String s=new String();
s=k.get(index);//读取相应位置的元素

5.删除元素

    k.remove(index);

6、判断是否已经存在某对象

    boolean p=k.contain(s);

 以设计一个记事本为例,其主要有以下几个功能:

  • 能存储记录
  • 不限制能存储的记录的数量
  • 能查看存进去的每一条记录
  • 能删除一条记录
  • 能列出所有的记录

 所以我们据此设计几个接口:

  1.Add(String s);   //添加记录

  2.Get(int index);  //查看某条记录

  3.Remove(int index); //删除某条记录

  4.list();       //列出所有记录

  5.getsize();     //查看记录数目

public class Note {
private ArrayList<String> k=new ArrayList<String>();
public void add(String s)
{
k.add(s);
}
public String get(int index)
{
return k.get(index);
}
public void remove(int index)
{
k.remove(index);
}
public int getsize()
{
return k.size();
}
public String[] list()
{
String []s=new String[k.size()];
k.toArray(s);
return s;
} public static void main(String[] args) {
Note notes=new Note();
System.out.println("hello");
Scanner in=new Scanner(System.in);
int num=-2;
String[] temp;
String f=new String();
int no=1;
System.out.println(" 0:add list\n 1:remove list \n 2:getsize\n 3:print all list"); while(num!=-1)
{
num=in.nextInt();
in.nextLine(); //caution!! switch (num)
{
case 0:
System.out.println("add what?? enter is over");
notes.add(in.nextLine());
break;
case 1:
System.out.println("remove what?? input the num");
notes.remove(in.nextInt());
break;
case 2:
System.out.println("the size of notes is:"+notes.getsize());
break;
case 3:
System.out.println("the list of notes is:");
temp=new String[notes.getsize()];
temp=notes.list();
for(String a:temp)
{
System.out.println(no+"."+a);
no++;
}
break;
}
no=1;
} }
}

  比较简单,纯当练习练习,也没什么价值,大佬就不要看了。

  另外这段程序在连续使用nextInt()和nextLine()时,出了一点小问题,类似C语言,由于nextInt()好像不会读取你输入结束的回车键'\n',这时不做处理的话,nextLine()就会把'\n'当作输入的字符读走,并认为输入结束。解决办法是类似在C语言中加入getchar()一样,之间插入一个nextLine(),就不会受到换行符的影响了。另外分享一个讲解nextInt(),nextLine()与next()区分的blog:https://www.bbsmax.com/A/kjdwb1L65N/

Java学习笔记2-1的更多相关文章

  1. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  2. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  3. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  4. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  5. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  6. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  7. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. Java学习笔记-多线程-创建线程的方式

    创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...

  10. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

随机推荐

  1. Java基础__03.异常

    什么是异常? 异常是指程序运行中出现的各种例外情况,如文件找不到.网络连接失败.传参错误...异常发生在程序运行期间,它影响了正常的程序执行流程. 异常体系结构: 在java中,异常是被当作对象来处理 ...

  2. jquery链式调用原理

    jquery选择器$('selector')返回的不是数组,而是一个被封装好的jQuery对象,查询到的每一个节点,都被以下标为属性的方式添加到jQuery对象,jQuery对象上的方法包含对象本身的 ...

  3. Doris使用记录

    创建分区表: CREATE TABLE `test_partitioned` ( `gmt_create` datetime NULL COMMENT "创建时间", `colum ...

  4. C#判断窗体是否打开,并获取聚焦、未打开则新建一个子窗体

    在桌面程序开发会遇到的情况,托盘功能或者是小功能弹窗问题: 现有一个主窗体有子窗体 子窗体每个都可以新建其他窗体问题:新建子窗体时怎么判断子窗体是否打开?若子窗体打开则置顶获取焦点.若未打开则新建一个 ...

  5. Modern C++ ——constexpr的各种用法

    Modern C++ --constexpr的用法 Reference <现代C++语言核心特性解析> 为什么引入constexpr const可以定义常量,但也可以用来定义只读变量.co ...

  6. hyperfine spectra

    !Hyperfine spectradefine int n xlet xlet name spect-'x'!file in 'name'.basfindget 3set mod x aset un ...

  7. docker-compose 文件

    安装 curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s` ...

  8. 为什么要有jvm,jvm的作用?

    jvm的两个作用:第一.运行并管理java源码文件所生成的Class文件.第二.在不同的操作系统上安装不同的jvm,从而去实现跨平台的一个保障. 一般情况下,即使不熟悉jvm的运行机制,也不影响业务代 ...

  9. php 图片加水印插件

    问题:背景透明的水印图片,在加到原图上后不显示,待解决 <?php /** * 图片加水印(适用于png/jpg/gif格式) * * @author flynetcn * * @param $ ...

  10. RestTemplate 连接池最大链接数

    原文链接:https://www.cnblogs.com/x-x-736880382/p/11591906.html 以前我们项目都是基于Apache HttpClient 连接池进行web 接口调用 ...