扩展:

For-each循环

for (String s: str) {
System.out.println(s);

}

等同于
for (int i = 0; i < str.length; i++) {
      String s = str[i];
      System.out.println(s);
}

是J2SE 1.5提供的另一种形式的for循环,可以用来处理不知道str长度的情况

顺序容器

泛型容器类 ArrayList

ArrayList<String> notes = new ArrayList<String>

容器的类型ArrayList  元素的类型String

例子:

package notes;

import java.util.ArrayList;

public class NotesBook {

private ArrayList<String> notes = new ArrayList<String>(); //创建容器:notes

public void add(String s){ //添加方法

notes.add(s);

}

public void add(String s, int Location){

notes.add(Location, s);

}

public int getSize(){ //获取数量

return notes.size();

}

public String getNote(int index){ //通过索引来查找

return notes.get(index);

}

public void removeNote(int index){ //通过索引删除

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); //相当于以上循环

return a;

}

public static void main(String[] args) {

NotesBook nb = new NotesBook();

nb.add("first");

nb.add("second");

nb.add("thrid", 1);

System.out.println(nb.getSize());

System.out.println(nb.getNote(1));

System.out.println("remove后-------------------------");

nb.removeNote(1);

String[] a =nb.list();

for(String s : a){ //处理不知道s长度的情况

System.out.println(s);

}

}

}

对象数组

对象数组中的每个元素都是对象的管理者而非对象本身。

For-each循环

class Value{

private int i;

public void set(int i){

this.i=i;

}

public int get(){

return i;

}

}

....

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.println(v.get());

v.set(0); //在此设置为0

}

for(Value v : a){

System.out.println(v.get());

}

}

}

容器类也是可以使用for-each

ArrayList<String> b = new ArrayList<String>();

b.add("first");

b.add("second");

for (String s : b){

System.out.println(s);

}

集合容器(set) 就是数学上的集合set(唯一性 没有排序)

格式:HashSet<String> s = new HashSet<String>();

区别:

ArrayList<String> b = new ArrayList<String>();

b.add("first");

b.add("second");

b.add("first");

for (String s : b){

System.out.println(s);

}

System.out.println("------我是分割线------");

HashSet<String> s = new HashSet<String>();

s.add("F1");

s.add("S2");

s.add("F1");

for(String k : s){

System.out.println(k);

}

更加直观的直接输出s 结果如下:

而这两个容器包括了普通如上value类中加了(public String toString(){return “”+i})

Hash表 也叫做散列表HashMap<k,v> 键是唯一的输出最后一个

Java的Hash表可以以任何实现了hash()函数的类的对象做值来存放对象。

private HashMap<Integer,String> cname = new HashMap<Integer,String>();

package notes;

import java.util.HashMap;

import java.util.Scanner;

public class Corn {

private HashMap<Integer,String> cname = new HashMap<Integer,String>();

public Corn(){ //构造

cname.put(1, "penny");

cname.put(10, "dime");

cname.put(25, "quarter");

cname.put(50, "half-dolar");

System.out.println(cname.keySet().size());

for(Integer k: cname.keySet()){

String s =cname.get(k);

System.out.println(s);

}

}

public String getName( int amount){

if(cname.containsKey(amount)){

return cname.get(amount);

}else{

return "NOT FOUND";

}

}

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

int amount =in.nextInt();

Corn corn =new Corn();

String name= corn.getName(amount);

System.out.println(name);

}

}

Java基础——对象容器(顺序、集合、Hash)的更多相关文章

  1. java基础之容器、集合、集合常用方法

    一.容器(Collection):数组是一种容器,集合也是一种容器 java编程中,装其他各种各样的对象(引用类型)的一种东西,叫容器 注意: 1.数组的长度是固定的 2.集合:长度不固定, 可以随时 ...

  2. JAVA基础第五章-集合框架Map篇

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  3. Java基础-引用数据类型之集合(Collection)

    Java基础-引用数据类型之集合(Collection) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便 ...

  4. Java中的容器(集合)之ArrayList源码解析

    1.ArrayList源码解析 源码解析: 如下源码来自JDK8(如需查看ArrayList扩容源码解析请跳转至<Java中的容器(集合)>第十条):. package java.util ...

  5. Java中的容器(集合)之HashMap源码解析

    1.HashMap源码解析(JDK8) 基础原理: 对比上一篇<Java中的容器(集合)之ArrayList源码解析>而言,本篇只解析HashMap常用的核心方法的源码. HashMap是 ...

  6. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

  7. 《java基础——对象的拷贝》

    java基础--对象的拷贝 一.浅拷贝: 规则: 1. 浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化. 2. 浅拷贝相当于两个对象共用一套实例. 格式: 类名 对象 ...

  8. [ Java学习基础 ] Java的对象容器 -- 集合

    当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入.使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找.在计算机中管理对象亦是如此,当获得多个对象后,也需要一个容器将它们管理起来,这 ...

  9. Java基础知识强化之集合框架笔记13:Collection集合存储学生对象并遍历

    1. Collection集合存储学生对象并遍历: 需求:存储自定义对象并遍历Student(name,age) 分析: (1)创建学生类 (2)创建集合对象 (3)创建学生对象 (4)把学生对象添加 ...

随机推荐

  1. SQLite的原子提交--单文件场景

    3. 单文件提交 我们首先概要说明SQLite在单个数据库文件上为了执行事务的原子提交而采取的步骤.在后面的部分将讨论如何设计文件格式以保护其在断电故障中损坏,以及原子提交在多个数据库上的执行. 3. ...

  2. ORM-面向对象&关系数据库

    ORM-面向对象&关系数据库 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程 ...

  3. [matlab] 7.快速搜索随机树(RRT---Rapidly-exploring Random Trees) 路径规划

    RRT是一种多维空间中有效率的规划方法.它以一个初始点作为根节点,通过随机采样增加叶子节点的方式,生成一个随机扩展树,当随机树中的叶子节点包含了目标点或进入了目标区域,便可以在随机树中找到一条由从初始 ...

  4. 吴恩达课后作业学习2-week3-tensorflow learning-1-例子学习

    参考:https://blog.csdn.net/u013733326/article/details/79971488 使用TensorFlow构建你的第一个神经网络 我们将会使用TensorFlo ...

  5. linux进程管理总结

    目录 一.进程相关的概念 二.关闭会话时子进程进程被杀死 三.nohup的原理 四.setsid原理 五.daemon &和守护进程的区别 六.服务进程为什么要fork两次 七.systemd ...

  6. UVA10838 The Pawn Chess

    UVA好题没人写系列,感觉可以稍稍练习一下面向对象编程的形式(大雾) 题意很简单,在国际象棋的棋盘中有一些兵,走到对方底线即为胜利,问最优决策下谁能获胜.并输出最小步数. 首先这里的棋盘都只有\(4\ ...

  7. Ansible 简介

    Ansible 是一个开源的基于 OpenSSH 的自动化配置管理工具.可以用它来配置系统.部署软件和编排更高级的 IT 任务,比如持续部署或零停机更新.Ansible 的主要目标是简单和易用,并且它 ...

  8. MySQL 8 新特性之自增主键的持久化

    自增主键没有持久化是个比较早的bug,这点从其在官方bug网站的id号也可看出(https://bugs.mysql.com/bug.php?id=199).由Peter Zaitsev(现Perco ...

  9. 学习用Node.js和Elasticsearch构建搜索引擎(4): 构建Elasticsearch搜索引擎

    一.目标 使用node搭建一个知识库检索系统,要求词条平均检索速度必须在1s以内. 二.思路. 本人思路如下图. 橙色部分为我们要开发的内容, ES服务搭建(暂时用单节点测试,集群搭建以后再说), 三 ...

  10. Python_迭代器_35

    迭代器 # l = [1,2,3]# 索引# 循环 for# for i in l:# i## for k in dic:# pass #可以被for循环的# list# dic# str# set# ...