Java 自定义 的Array类,类似PHP中的数组
2014-12-29 17:54
579 查看
Java里有键值对数组,Hashmap,但是问题来了,它不能保持顺序,这对我们数据库排序的结果影响太大了 自己扩展一个,使用到之前的KV类 此类的对象,用for ... in 遍历, 多种方法增加数据 根据实际情况,增加了键名修正功能 import java.util.Iterator; import java.util.Vector; /** * 有序键值对数组对象 * * @author 蓝冰大侠 * */ public class Array implements Iterable<KV> { // 实际保存数据的有序数组 private Vector<KV> items = new Vector<KV>(); /** * 带初始数据的构造函数 * * @param items */ public Array(KV... items) { for (KV item : items) { this.items.addElement(item); } } /** * 不带初始数据的构造函数 */ public Array() { } /** * 返回全部数据 * * @return */ public Vector<KV> getItems() { return items; } /** * 添加一个值 * * @param item * @return */ public Array add(KV item) { return set(item.key, item.value); } /** * 冗余方法,同样添加一个值 * * @param item * @return */ public Array put(KV item) { return set(item.key, item.value); } /** * 快速添加一个键值对 * * @param key * @param value * @return */ public Array add(String key, Object value) { return set(key, value); } /** * 同上 * * @param key * @param value * @return */ public Array put(String key, Object value) { return set(key, value); } /** * 修改一个值 * * @param key * @param value * @return */ public Array set(String key, Object value) { // 如果原来有,修改 for (KV item : items) { if (item.key.equalsIgnoreCase(key)) { item.value = value; return this; } } // 否则 添加 items.addElement(new KV(key, value)); return this; } /** * 移除一个值 * * @param key * @return */ public Array remove(String key) { for (KV item : items) { if (item.key.equalsIgnoreCase(key)) { items.remove(item); } } return this; } /** * 取一个键值对 * * @param index * @return */ public KV get(int index) { return items.get(index); } /** * 根据键取值 * * @param key * @return */ public Object get(String key) { for (KV item : items) { if (item.key.equalsIgnoreCase(key)) { return item.value; } } return null; } /** * 返回 遍历器 * * @return */ public Iterator<KV> iterator() { return new ArrayIterator(); } /** * 遍历类 * * @author 蓝冰大侠 * */ class ArrayIterator implements Iterator<KV> { // 索引 private int index = 0; /** * 是否有下一个 */ public boolean hasNext() { return index != items.size(); } /** * 取下一个 */ public KV next() { return items.get(index++); } /** * 删除一个 */ public void remove() { items.remove(index); } } /** * 字段名修正大小写 * * @param name */ public void rename(String... names) { //逐个名称遍历 for (String name : names) { //在保存的数据里遍历 for (KV item : items) { //如果原来的键(不区分大小写)匹配,则修改为新的键 if (item.key.equalsIgnoreCase(name)) { item.key = name; } } } } }
相关文章推荐
- 类似php的js数组的in_array函数自定义方法
- 类似php的js数组的in_array函数自定义方法
- php中自定义函数dump查看数组信息类似var_dump
- [置顶] php超级预定数组( 类似javaWeb中域对象),函数,对象,进一步加深知识点
- 自定义类似php的js数组的in_array函数
- PHP 数组(array)自定义排序
- php中自定义函数dump查看数组信息类似var_dump
- php 自定义求数组差集,效率比自带的array_diff函数还要快(转)
- 类似php的js数组的in_array函数自定义方法
- PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集
- PHP合并数组的简单方法与array_merge()
- java中的arrayList传入oracle中的以数组(array)为参数的存储过程
- php数组array使用心得
- PHP合并数组的简单方法与array_merge()
- PHP - Manual手册 - 函数参考 - Array 数组函数 - array_diff计算数组的差集
- php中单个删除数组中指定的值用array_splice()实现
- PHP合并数组array_merge函数运算符加号与的区别
- php合并数组array_merge函数运算符加号与的区别
- Java的数组Array、Vector、ArrayList、HashMap的异同
- 浅谈Java集合中Array(数组)的应用