java list取值的问题!

我有一个list,list里存得是数组,每个数组里存得是:1.商品名称 2.商品价格 3.店铺名称 4....等等。
现在我要遍历list取值,要求按 店铺名称 分开显示,就是同一店铺的商品放一起,然后再遍历显示输出出来。
这样该如何遍历这个list,求高手指教,新手,写个简单的例子最好,谢谢了。

2楼的想法没错,但是加上等价类思想,并且两重循环不要用一个list.get()就能够通过了
要我编其他部分的代码也只能和2楼得一样了,最多变量名不一样,我修改一下2楼的代码好了
public static void main(String[] args)
{
List<String[]> list = new ArrayList<String[]>();
List<String[]> list2 = list;
List<String[]> newList = new ArrayList<String[]>();
String []shopName_1=new String[list.size()];//添加等价类
int m=0,n=0;//等价类指针
for (int i = 0; i < list.size(); i++)
{
String[] array = list.get(i);
String shopName = array[3];
//在进入添加新list循环之前,先通过等价类进行判断
for(m=0;m<n;m++)//判断是否已经将该商铺的商品添加到新list中了
if(shopName.equals(shopName_1[m]))
break;
if(m!=n)
continue;//已经添加过了,跳过本轮循环不再添加
else{
shopName_1[n]=shopName;//没有添加过,将新的商铺添加到等价类中
n++;//等价类指针后移
}
for (int j = 0; j< list2.size(); j++)
{
String[] array1 = list2.get(j);
String shopName1 = array1[3];
if (shopName1.equals(shopName))
{
newList.add(array);//将店铺名为shopName的数据存入新list
}
}
}
}

应该满足楼主你的要求了
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-25
从题目来看,就是根据 店铺名称 排序呗,考虑可能牵扯到中文排序
程序也很简单的啊
-----------------------------
忘记贴码了,现在加上

package test1;

import java.awt.List;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class AAA implements Comparable <AAA> {
private String tradeName;
private int commodityPrice;
private String storeName;

public AAA(String tn,int cp,String sn){
this.tradeName = tn;
this.commodityPrice = cp;
this.storeName = sn;
}

@Override
public int compareTo(AAA o) {
Comparator cmp =Collator.getInstance(java.util.Locale.CHINA);
return cmp.compare(this.storeName, o.storeName);
}

public String toString(){
return new StringBuilder().append(this.storeName).append("\t")
.append(this.tradeName).append(" ")
.append(this.commodityPrice).toString();
}

public static void main(String[] args){

AAA a1 = new AAA("内存",12,"地狱1");
AAA a2 = new AAA("内存",14,"地球1");
AAA a3 = new AAA("硬盘",16,"地狱2");
AAA a4 = new AAA("硬盘",16,"地球2");
AAA a5 = new AAA("硬盘",16,"天堂1");

ArrayList <AAA> list = new ArrayList<AAA>();
list.add(a1);
list.add(a2);
list.add(a3);
list.add(a4);
list.add(a5);

System.out.println("-----排序前-----");

for(AAA x:list)
System.out.println(x);

Collections.sort(list);

System.out.println("-----排序后-----");
for(AAA x:list)
System.out.println(x);
}

}
第2个回答  2011-08-24
没有试试,LZ可以按照这个思路试试看,应该没问题
public static void main(String[] args)
{
List<String[]> list = new ArrayList<String[]>();
List<String[]> newList = new ArrayList<String[]>();

for (int i = 0; i < list.size(); i++)
{
String[] array = list.get(i);
String shopName = array[3];

for (int j = 0; j< list.size(); j++)
{
String[] array1 = list.get(j);
String shopName1 = array1[3];
if (shopName.equals(shopName1))
{
newList.add(array);
}
}
}
}追问

这种逻辑不行,我试了下,最后newList里存得是顺序没变,没条数据的数量变了

追答

list中的add方法,每次添加的时候是在list的尾部添加;也就是说,newLIst中出来的数据时根据shopName分类过的,逻辑没问题,只怕LZ没理解

第3个回答  2011-08-26
List<String[]> list = new ArrayList<String[]>();
String[] ss1 = ;
String[] ss2 = ;
String[] ss3 = ;
list.add(ss1);
list.add(ss2);
list.add(ss3);

HashMap<String, String> has = new HashMap<String, String>();
for (String[] strs : list) {
String shopName = strs[2];
if(has.containsKey(shopName)) {
has.put(shopName, has.get(shopName) + "," + strs[0]);
} else {
has.put(shopName, strs[0]);
}
}
System.out.println(has);
本回答被提问者采纳
相似回答