Java 对象容器
一、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 对象容器的更多相关文章
- [转]JAVA对象容器
要用Java实现记事本的功能.首先列出记事本所需功能: 可以添加记录(字符串): 可以获得记录条数: 可以删除其中某一条记录: 可以获得指定第几条的记录: 可以列出所有的记录. 如果这个记事本是某个大 ...
- Java对象容器总结
泛型容器类 容器类型: ArrayList 元素类型: 有排序 String:里面存放的是对象的管理者,而不是具体的对象,所以string类型有null值 集合容器 容器类型 Set 元素类型 唯一性 ...
- JSP隐式对象是JSP容器为每个页面提供的Java对象
JSP 隐式对象 JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. JSP所支持的九大隐式对象: 对象 描述 reque ...
- Java进阶学习(3)之对象容器(上)
对象容器 顺序容器 记事本的例子 UI设计和业务逻辑要分离 接口设计 add(String note); getSize(); getNote(int index); removeNote(index ...
- 理解Java对象序列化
http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html 1. 什么是Java对象序列化 Java平台允许我们在内存中创 ...
- Java基础学习总结——Java对象的序列化和反序列化
一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...
- 《精通Hibernate:Java对象持久化技术详解》目录
图书信息:孙卫琴 电子工业出版社 第1章 Java应用分层架构及软件模型: 1.1 应用程序的分层体系结构 1.1.1 区分物理层和逻辑层 1.1.2 软件层的特征 1.1.3 软件分层的优点 1.1 ...
- Java集合容器简介
Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...
- Java基础学习总结--Java对象的序列化和反序列化
一.序列化和反序列化的概念 把对象转换成字节序列的过程称之为对象的序列化 把字节序列恢复为对象的过程称之为对象的反序列化 对象序列化的主要用途: 1)把对象的字节序列永久的保存到硬盘上,通常放在一个文 ...
随机推荐
- post请求与get请求的差别
幂等的概念 在理解这两者的区别前需要先了解的概念: 幂等性在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.简单的说就是,浏览器发起一次请求和多次请求,不会改变目标资源的状 ...
- leetcode 209 3 滑动窗口
class Solution { public: int minSubArrayLen(int s, vector<int>& nums) { ,r=-; //由于数组是[]区间, ...
- python 关于函数递归调用自己
爬取b站博人传 每页短评20个,页数超过1000页, 代码如下 import requests import json import csv def main(start_url): headers ...
- iNeuOS工业互联平台,开放设备驱动管理、服务驱动管理、云组态自定义画布等,促进平台开放、赋能和落地。发布:v2.3版本。
目 录 1. 概述... 2 2. iNeuOS平台演示... 2 3. 设备驱动管理... 2 4. 服务驱动管理... 3 5. 云组 ...
- Python基础类型(1)
整数 整数在Python中的关键字用int来表示; 整型在计算机中运于计算和比较 在32位机器上int的范围是: -2**31-2**31-1,即-2147483648-2147483647 在64 ...
- SQL逗号合并一列多行的值
select stuff((select ','+行名 from 表名 for xml path('')),1,1,'')
- 手把手教你用Abp vnext构建API接口服务
ABP是一个开源应用程序框架,该项目是ASP.NET Boilerplate Web应用程序框架的下一代,专注于基于ASP.NET Core的Web应用程序开发,也支持开发控制台应用程序. 官方网站: ...
- 初学react
React特点: 声明式设计:建议使用JSX来描述用户界面;构建组件:单向响应的数据流: JSX:JSX是一种JAVASCRIPT的语法扩展,元素是构成react的最小单位,JSX就是用来声明REAC ...
- (转)协议森林13 9527 (DNS协议)
协议森林13 9527 (DNS协议) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在周星驰的电影<唐伯虎点秋香> ...
- KEIL编译出现错误“source file is not valid utf-8”
实际情况是: .h文件一直报错source file is not valid utf-8的错误, 原因就是: 文件中出现了一个中文的“:”导致的.总结就是:如出现此类错误,可能是字符不够标准.