用java实现一个方法来求出一个分类下面包括哪些品牌
我有一份execl文件,
例如:
产品名称 分类 品牌
白酒 酒 茅台
白酒 酒 洋河
男装外套 衣服 森马
女装外套 衣服 森马
等等,数据很长。
我想实现
酒:茅台,洋河
衣服:森马
这样的功能。。。
有谁能帮忙实现一下,100分送上。。
[解决办法]
package com.djk.design.Test;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
/**
* 客户端测试方法
* @author djk
*
*/
public class OperatorExeclTest
{
public static void main(String[] args) throws Exception
{
OperatorExecl operatorExecl = new DjkOperatorExecl();
Map<String,Set<String>> map= operatorExecl.getResult("E:/my.xls");
System.out.println(map);
}
}
/**
* 操作execle文件
* @author djk
*
*/
interface OperatorExecl
{
Map<String,Set<String>> getResult(String path) throws Exception ;
}
/**
* 实现类
* @author djk
*
*/
class DjkOperatorExecl implements OperatorExecl
{
@Override
public Map<String, Set<String>> getResult(String path) throws Exception
{
Set<String> list = null;
Map<String,Set<String>> map = new HashMap<String, Set<String>>();
Workbook book = Workbook.getWorkbook(new File(path));
// 获得第一个工作表对象
Sheet sheet = book.getSheet(0);
//获得行数
int rows = sheet.getRows();
//获得列数数
int columns = sheet.getColumns();
String resultkey = null;
String resultvalue = null;
for(int i = 1;i<rows;i++)
{
for(int j = 0;j<columns;j++)
{
Cell cell1 = sheet.getCell(j, i);
if(MyConstant.TWOCOLUMN.getValue() ==j)
{
resultkey = cell1.getContents();
}
if(MyConstant.THREECOLUMN.getValue()==j)
{
resultvalue = cell1.getContents();
Set<String> list1 = map.get(resultkey);
if(null==list1
[解决办法]
list1.size()==0)
{
list = new HashSet<String>();
list.add(resultvalue);
map.put(resultkey, list);
}else
{
map.get(resultkey).add(resultvalue);
}
}
}
}
return map;
}
}
enum MyConstant
{
TWOCOLUMN(1),THREECOLUMN(2);
private MyConstant(int i)
{
this.value = i;
}
private int value;
public int getValue() {
return value;
}
}
我的execl定义:

结果:{衣服=[森马], 酒=[茅台, 洋河]}
lz你参照下吧。。。。
[解决办法]
jxl好像不支持office2007之后的版本。。
这个逻辑上其实很简单,用分类做key,Set存取品牌名,读每一行的数据,
Map<分类,Set<品牌>>
这样就行了,
至于读取execl的方法,一个工具类,
http://bbs.csdn.net/topics/390360927
返回的直接是String[][]数据型,至于剩余的你处理应该挺简单吧。