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. 尝试在virtualbox虚拟机中fedora30中实现文件夹共享

    $ sudo dnf install gcc kernel-devel kernel-headers dkms make bzip2 perl $ rpm -qa|grep kernel|sort 确 ...

  2. oracle学习之undo的基本知识及事务与undo、数据块的关联

    通过自己学习总结的这些undo知识能够让大家都能深刻了解oracle的undo相关原理. 一.undo撤销表空间的作用 撤销表空间通常称为undo表空间:undo表空间的段也称为撤销段或undo段.回 ...

  3. 城市间最短路径问题——R和Rcpp实现

    这里的最短路径问题也叫做相识问题,具体问题来自 https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/examples.ht ...

  4. 栈和寄存器虚拟机比较(以python和lua为例)

    指令长度 python python的指令定长,长度为16bit,其中8bit操作码,8bit操作数. ///@file: Python-3.6.0\Include\code.h typedef ui ...

  5. composer更新报错

    在用composer安装Yii2的扩展插件时,报错: [UnexpectedValueException] Could not parse version constraint <=2.*: I ...

  6. HDLbits——Lfsr32

    //Build a 32-bit Galois LFSR with taps at bit positions 32, 22, 2, and 1. 草图 verilog描述 module top_mo ...

  7. 2020ICPC沈阳I - Rise of Shadows

    剩余系 Problem - I - Codeforces 题意 给定 \(H,M,A\) \(2<=H,M<=10^9,\;0<=A<=\frac {H*M}2\) 假设一个钟 ...

  8. 【C学习笔记】【分享】day2-2 不允许创建临时变量,交换两个数的内容(附加题)

    加法实现: #include <stdio.h> int main() { int a = 30; int b = 20; a = a + b; b = a - b; a = a - b; ...

  9. Echart 使用

    查看前端面试题小程序 大量面试题和答案,请微信查看 // var list = [1,1,54,5,5,85,8,8,5,5,8,8,85,8,8,5,5,85,88,85,8,88,8,8,8,8, ...

  10. (Jmeter笔记)jmeter连接数据库(mysql)

    下载mysql连接驱动 地址:https://dev.mysql.com/downloads/connector/j/ ****把mysql连接驱动放在Jmeter/lib目录下**** >&g ...