一、ArrayList 容器

1、记事本

package booknote;

import java.util.ArrayList;

public class NoteBook {
private ArrayList<String> notes=new ArrayList<String>();//引入ArrayList类,容器;包括容器类型,内容类型 public void add(String s)//增加字符串
{
notes.add(s);//ArrayList 自带的add
}
public void add(String s, int location)// add 函数重载
{
notes.add(location, s);
}
public int getSize()//得到字符串的个数
{
return notes.size();
}
public String getNote(int index)//获取第n个字符
{
return notes.get(index);
}
public void removeNote(int index)//删除 注意void 不返回值就可以了
{
notes.remove(index);
}
public String[] list()
{
String[] a=new String[notes.size()];
// for(int i=0;i<notes.size();i++)
// {
// a[i]=notes.get(i);
// } notes.toArray(a); //黄色和绿色都可以实现将notes中的字符串赋给 字符串数组a中,一个是使用遍历的方法,一个是使用自带函数
return a;
} public static void main(String[] args) { NoteBook nb=new NoteBook();
nb.add("first");
nb.add("second ");
nb.add("third",0);//插入到0位置
String[] a=nb.list();
for(String s:a)
{
System.out.println(s);
}
System.out.println(nb.getNote(0));//得到0位置的字符串 System.out.println("\n");
nb.removeNote(0);//删除0位置元素
System.out.println(nb.getSize());
a=nb.list();//刷新a
for(String s:a)
{
System.out.println(s);
}
} }

2、对象数组

package Hello;

public class hello {

	public int SUM(int a,int b)//必须创建对象调用
{
return a+b;
} public static int Sum(int a,int b)//static 方便在没有创建对象的情况下调用
{
return a+b;
} public static void main(String[] args) {
// TODO Auto-generated method stub
int x=10;
int y=5;
hello num=new hello();
System.out.println(Sum(x,y));//直接调用就可以
System.out.println(num.SUM(x,y));//必须创建对象,利用 对象.函数 才可以 } }

3、对象数组和普通数组赋值差异

package Hello;

class Value{ //新建类这样建
private int i;
public void set(int i)
{
this.i=i;
}
public int get()
{
return i;
} } public class hello { public static void main(String[] args) { Value[] a=new Value[10];
for(int i=0;i<a.length;i++)
{
a[i]=new Value();
a[i].set(i);
}
for(Value v:a)
{
System.out.print(v.get()+" ");
v.set(0);
}
System.out.println();
for(Value v:a)
{
System.out.print(v.get()+" ");
}
}
}

 

package Hello;

public class test {

	public static void main(String[] args) {
int[] a=new int[10];
for(int i=0;i<a.length;i++)
{
a[i]=i;
}
for(int v:a)
{
System.out.print(v+" ");
v=0;//无效
}
System.out.println();
for(int v:a)
{
System.out.print(v+" ");
}
System.out.println();
for(int i=0;i<a.length;i++)
{
a[i]=0;
}
for(int v:a)
{
System.out.print(v+" ");
}
} }

可以看到在对象数组中for each可以改变赋值

但是在普通数组中 for each 不可以改变赋值。

这是因为,对象数组中指向的是对象的位置,可以改变对象的位置上的值。而int[]这类数组,指向的是数组上的值,不能通过值改变值。

4、

package Hello;

class Value{ //新建类这样建
private int i;
public void set(int i)
{
this.i=i;
}
public int get()
{
return i;
}
// public String toString() //转化为字符串输出
// {
// return ""+i;
// } } public class hello { public static void main(String[] args) { Value[] a=new Value[5];
for(int i=0;i<a.length;i++)
{
a[i]=new Value();
a[i].set(i);
}
for(Value v:a)
{
System.out.println(v);
}
}
}

得到的其实是位置。

加入public String toString()后程序如下图

package Hello;

class Value{ //新建类这样建
private int i;
public void set(int i)
{
this.i=i;
}
public int get()
{
return i;
}
public String toString() //转化为字符串输出
{
return ""+i;
} } public class hello { public static void main(String[] args) { Value[] a=new Value[5];
for(int i=0;i<a.length;i++)
{
a[i]=new Value();
a[i].set(i);
}
for(Value v:a)
{
System.out.println(v);
}
}
}

 

二、set容器

package Hello;

import java.util.ArrayList;
import java.util.HashSet; public class test { public static void main(String[] args) {
ArrayList<String> s=new ArrayList<String>();
s.add("first");
s.add("second");
s.add("first");
for(String a:s)
{
System.out.println(a);
}
System.out.println(s);
System.out.println("************************"); HashSet<String> s1=new HashSet<String>();
s1.add("first");
s1.add("second");
s1.add("first");
s1.add("airst");
for(String a:s1)
{
System.out.println(a);
}
System.out.println(s1);
} }

HashSet容器可以去重并且排序。

三、Hashmap  

可以利用HashMap生成键值对。

package coins;

import java.util.HashMap;
import java.util.Scanner; public class coin {
private HashMap<Integer,String> coinnames=new HashMap<Integer,String>();//Integer是int 的包裹类型 //public void Coin()
public coin()
{
coinnames.put(1,"penny");
coinnames.put(10,"dime");
coinnames.put(25,"quarter");
coinnames.put(50,"half-dolar");
coinnames.put(50,"yuan");
System.out.println("********************");
System.out.println(coinnames);//输出HashMap集合
System.out.println(coinnames.keySet());//输出键集合
System.out.println(coinnames.values());//输出值集合
System.out.println(coinnames.values().size());//键(值)长度
System.out.println("********************");
for(Integer i:coinnames.keySet())
{
System.out.print(i+" ");
}
System.out.println("\n********************");
for(String i:coinnames.values())
{
System.out.print(i+" ");
}
System.out.println("\n********************");
for(Integer i:coinnames.keySet())
{
System.out.print(coinnames.get(i)+" ");
}
System.out.println("\n********************");
}
public String getName(int amount)
{
if(coinnames.containsKey(amount))
return coinnames.get(amount);
else
return "Not Found";
} public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
coin money=new coin();
//money.Coin();
System.out.println(money.getName(n));
in.close();
} }

黄色部分,既可以直接用原类来增加键值对(public coin),

也可以通过构造函数(public void Coin)来增加,如果利用构造函数的话,必须得调用函数才行。

再有注意他们输出的方法。

Java 对象容器的更多相关文章

  1. [转]JAVA对象容器

    要用Java实现记事本的功能.首先列出记事本所需功能: 可以添加记录(字符串): 可以获得记录条数: 可以删除其中某一条记录: 可以获得指定第几条的记录: 可以列出所有的记录. 如果这个记事本是某个大 ...

  2. Java对象容器总结

    泛型容器类 容器类型: ArrayList 元素类型: 有排序 String:里面存放的是对象的管理者,而不是具体的对象,所以string类型有null值 集合容器 容器类型 Set 元素类型 唯一性 ...

  3. JSP隐式对象是JSP容器为每个页面提供的Java对象

    JSP 隐式对象 JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. JSP所支持的九大隐式对象: 对象 描述 reque ...

  4. Java进阶学习(3)之对象容器(上)

    对象容器 顺序容器 记事本的例子 UI设计和业务逻辑要分离 接口设计 add(String note); getSize(); getNote(int index); removeNote(index ...

  5. 理解Java对象序列化

    http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html 1. 什么是Java对象序列化 Java平台允许我们在内存中创 ...

  6. Java基础学习总结——Java对象的序列化和反序列化

    一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...

  7. 《精通Hibernate:Java对象持久化技术详解》目录

    图书信息:孙卫琴 电子工业出版社 第1章 Java应用分层架构及软件模型: 1.1 应用程序的分层体系结构 1.1.1 区分物理层和逻辑层 1.1.2 软件层的特征 1.1.3 软件分层的优点 1.1 ...

  8. Java集合容器简介

    Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...

  9. Java基础学习总结--Java对象的序列化和反序列化

    一.序列化和反序列化的概念 把对象转换成字节序列的过程称之为对象的序列化 把字节序列恢复为对象的过程称之为对象的反序列化 对象序列化的主要用途: 1)把对象的字节序列永久的保存到硬盘上,通常放在一个文 ...

随机推荐

  1. 前端每日实战:27# 视频演示如何用纯 CSS 创作一个精彩的彩虹 loading 特效

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/vjvoow 可交互视频教程 此视频 ...

  2. Jessica's Reading Problem POJ - 3320

    Jessica's Reading Problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17562   Accep ...

  3. 如何给女朋友讲SSM和springBoot的区别?(简单描述一下)

  4. tfgan折腾笔记(三):核心函数详述——gan_loss族

    gan_loss族的函数有: 1.gan_loss: 函数原型: def gan_loss( # GANModel. model, # Loss functions. generator_loss_f ...

  5. 使用增量备份修复DG中的GAP

    问题描述 oracle中DG出现主备不同步现象,alert日志报警有gap信息,但是v$archive_gap视图查不到任何信息.同时主库上的对应归档已经删除且没有备份 解决方案 1.查询备库的scn ...

  6. python安装包的3的方式

    1.pip pip install 包名 2.压缩包(针对pip安装不上) 1.下载源码解压(压缩包有setup.py) 2.python setup.py install 3.****.whl文件 ...

  7. 转载:Nginx 相关介绍

    转载自:https://www.cnblogs.com/wcwnina/p/8728391.html Nginx 相关介绍(Nginx是什么?能干嘛?)   Nginx的产生 没有听过Nginx?那么 ...

  8. ArchLinux - 脚本安装使用指南

    前面不想废话,讲什么脚本说明,功能什么的!只讲使用方法,其他的可以去Gitee看,去Github看. 脚本虽然支持Boot和UEFI,但是我打算一起讲,因为它们安装时的区别,只有3处不同. 第一步 先 ...

  9. leetcode面试题 17.16. 按摩师

    leetcode面试题 17.16. 按摩师 又一道动态规划题目 动态规划的核心就是总结出一个通行的方程. 但是这道题似乎不太适合使用递归的方式. 所以使用for循环遍历数组. class Solut ...

  10. Web过滤器和监听器

    1.过滤器 1.1什么是过滤器 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servle ...