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. php textarea根据回车转换成数组

    $val是textarea文本框的内容 假如是:张三/32岁/男 李四/28岁/男 $arr=explode("\n",$val); $arr2 = array(); foreac ...

  2. html入門 如何 區別行級元素 和 塊級元素

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. python36

    无限循环 如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例: 实例 #!/usr/bin/python # -*- coding: UTF-8 -*- var = 1 while v ...

  4. js中的this的指向问题

    this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 this永远指向的是最后调用它的对象,也就是看它执行的时候是谁调 ...

  5. GPIO原理及配制方法

    GPIO原理及配制方法 引用地址: ARM SOC芯片的GPIO结构示意图 @@@ GPIO的八种模式 1,输入浮空模式 2,输入上拉模式 3,输入下拉模式 4,模拟输入模式 5,开漏输出模式 6,开 ...

  6. Zookeeper ZAB协议-客户端源码解析

    因为在Zookeeper的底层源码中大量使用了NIO,线程和阻塞队列,在了解之前对前面这些有个基础会更容易理解 ZAB 是Zookeeper 的一种原子广播协议,用于支持Zookeeper 的分布式协 ...

  7. rxjs笔记(未完成)

    首先是 Observable 和promise的区别, 1返回值个数,Observable 可以返回0到无数个值. 2.Promise主动推送,控制着"值"何时被 "推送 ...

  8. https原理(六)系统分析

    先解决此前的问题: 1 http原理(三)双向实践(curl) need时java 客户端可访问,但没客户端证书:want时有 后来发现,没有给truststore,猜测为,当springboot读到 ...

  9. elasticSearch(四)--结构化查询

    结构化查询 1.请求体查询 GET(POST) /_search POST /_search { "from": 30, "size": 10 } 2.DSL ...

  10. 图像bayer格式介绍

    图像bayer格式介绍 https://zhuanlan.zhihu.com/p/72581663