java map接口怎么用啊?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java map接口怎么用啊?相关的知识,希望对你有一定的参考价值。
java map接口怎么用啊?
java.util.Map里面的这个...
将Map装载进List当中,虽然循环多次赋值,并且每次赋值后的Map装载入List,但实际到最后时,List中所有的Map为同一键值,因此建议在循环内每次都New一个新的Map对象,但为了效率考虑,最好就Map的申明放在循环外做;
public List readExcel(String fileUrl, String fileName, int sheetNum,
String[] attribute, int startRow, int[] ignoreColumn)
// 返回值
List<Map<String, String>> result = new ArrayList<Map<String, String>>();
// 文件流
InputStream is = null;
// 读入文档的出错行号
int errorRow = 0;
try
// 如果同一文档,则只产生一个实例
if (wb == null)
is = new FileInputStream(fileUrl + "\\" + fileName);
wb = Workbook.getWorkbook(is);
is.close();
// 读入Sheet页
Sheet sheet = wb.getSheet(sheetNum);
// 行数
int rows = sheet.getRows();
// 根据每个Sheet页的字段数指定列数
int columns = attribute.length - 1 + ignoreColumn.length;
int countAttribute = 0;
// 打印信息
// System.out.print(sheet.getName() + " ");
// System.out.print("rows:" + rows);
// System.out.println(" columns" + columns);
// 逐行读入
// Map<String, String> map = new HashMap<String, String>();
Map<String, String> map;
boolean rowIsNull;
aaa: for (int i = startRow - 1; i < rows; i++)
// 每次读入文档前,清空map
// map.clear();
map = new HashMap<String, String>();
// 当前Sheet页行数(指Excel行号)
errorRow = i + 1;
// 不为空列数计数值
int columnIsNotNullNum = 0;
// 一行数据中,必须有至少5列以上的数据,才认为该行为正常数据,否则退出
rowIsNull = true;
for (int k = 0; k < columns; k++)
String rowContent = sheet.getCell(k, i).getContents();
if (rowContent != null && !rowContent.equals(""))
++columnIsNotNullNum;
if (columnIsNotNullNum >= 5)
rowIsNull = false;
break;
// 如果一行不超过5列有值,则跳出循环
if (rowIsNull)
break aaa;
// 逐列读值
bbb: for (int j = 0; j < columns; j++)
for (int k = 0; k < ignoreColumn.length; k++)
// 不读忽略的列
if (j == ignoreColumn[k] - 1)
continue bbb;
// 取得单元格内容
String sbcContent = sheet.getCell(j, i).getContents();
// 全角转换为半角
String content = CommonUtil.sbcChange(sbcContent);
// 建立数据库字段键值映射关系
map.put(attribute[countAttribute], content.trim());
countAttribute++;
// 将文档名称入库
map.put(attribute[countAttribute], fileName);
result.add(map);
countAttribute = 0;
catch (Exception e)
wb.close();
try
is.close();
catch (IOException e1)
e1.printStackTrace();
e.printStackTrace();
result = null;
System.out.println(CommonCode.ERR_READ_ROW + ":" + errorRow);
return result;
java 中 Map 内部是怎么实现的
Map只是一个接口,只定义了具体的方法,没有去实现任何功能的Map的源码如下:
public abstract interface Map<K, V>
public abstract int size();
public abstract boolean isEmpty();
public abstract boolean containsKey(Object paramObject);
public abstract boolean containsValue(Object paramObject);
public abstract V get(Object paramObject);
public abstract V put(K paramK, V paramV);
public abstract V remove(Object paramObject);
public abstract void putAll(Map<? extends K, ? extends V> paramMap);
public abstract void clear();
public abstract Set<K> keySet();
public abstract Collection<V> values();
public abstract Set<Entry<K, V>> entrySet();
public abstract boolean equals(Object paramObject);
public abstract int hashCode();
public static abstract interface Entry<K, V>
public abstract K getKey();
public abstract V getValue();
public abstract V setValue(V paramV);
public abstract boolean equals(Object paramObject);
public abstract int hashCode();
参考技术A 楼下回答正确,map只是接口,实现类有很多
HashMap,HashTable,LinkedHashMap.....
以上是关于java map接口怎么用啊?的主要内容,如果未能解决你的问题,请参考以下文章