一、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. Spring-Boot-应用可视化监控

    图文简介 快速开始 1.Spring Boot 应用暴露监控指标[版本 1.5.7.RELEASE] 首先,添加依赖如下依赖: <dependency> <groupId>or ...

  2. window.showModalDialog与window.open()使用

    window.showModalDialog 有些浏览器不兼容,尝试用window.open() 封装替代,需要打开子窗口后向父窗口传递数据. <html> <script src= ...

  3. JavaScript 工作原理之十三-CSS 和 JS 动画底层原理及如何优化其性能

    原文请查阅这里,本文采用知识共享署名 4.0 国际许可协议共享,BY Troland. 本系列持续更新中,Github 地址请查阅这里. 这是 JavaScript 工作原理的第十三章. 概述 正如你 ...

  4. JavaScript实现树结构(一)

    JavaScript实现树结构(一) 一.树结构简介 1.1.简单了解树结构 什么是树? 真实的树: 树的特点: 树一般都有一个根,连接着根的是树干: 树干会发生分叉,形成许多树枝,树枝会继续分化成更 ...

  5. java并发编程基础概念

    本次内容主要讲进程和线程.CPU核心数和线程数.CPU时间片轮转机制.上下文切换,并行和并发的基本概念以及并发编程的好处和注意事项,为java并发编程打下扎实基础. 1.什么是进程和线程 1.1 进程 ...

  6. [转] SQL Server 数据库性能优化

    分析比较执行时间计划读取情况 1. 查看执行时间和cpu set statistics time on select * from Bus_DevHistoryData set statistics ...

  7. ggplot2(2) 从qplot开始入门

    2.1 简介 qplot的意思是快速作图(quick plot). qplot是一种快捷方式,如果您已习惯于使用基础plot(),则可以使用它.它可以使用一致的调用模式快速创建许多不同类型的图. qp ...

  8. URL及short URL短网址

    URL,uniform resource locator,经常被称为网址,尤其是在使用HTTP的时候.通常是一个指向某个资源的字符串.   URLs经常被用于网页(http),但也可以用于文件传输(f ...

  9. RPA如何跑赢传统自动化和人工?

    过去的4年时间里,RPA(机器人流程自动化)一词,在Gartner的搜索引擎中一直排名前五.去年Gartner发表的调查数据中显示,RPA行业在2018年保持了60%以上的增长速度,从而成为全球增长最 ...

  10. .NET写入文件操作

    2018-01-16  22:44:35 许多程序需要记录运行日志,这就需要将程序运行记录写入本机,一般是.txt 文本或.csv 文件.具体操作如下: 一.C#   using System.IO; ...