我从一个表里读出了数据
表是这样的,有2个字段,分别是名字类型,名字字段的数值是:奥迪A6、奥迪TT、宝马Z3、宝马Z4,类型字段的数值是,奥迪和宝马,也就是这4部车后边的类型
name      type
奥迪A6     奥迪
奥迪TT     奥迪
宝马Z3     宝马
宝马Z4     宝马
然后我做查询,把这些数值放到一个ArrayList数组里
public ArrayList SelectAuTo(String jibie)
{
ArrayList al = new ArrayList();
Connection con=null;
ResultSet rs = null;
java.sql.PreparedStatement ps= null;
con=DB.db();
String sql="select * from AuTo where type=?";
try
{
ps= con.prepareStatement(sql);
ps.setString(1, type);
                        rs = ps.executeQuery();
while(rs.next())
{
BeanAuTo ba=new BeanAuTo();
ba.setName(rs.getString("name"));
ba.setType(rs.getString("type"));
al.add(ba);
然后在页面读取
<jsp:useBean id="sAuTo" scope="request" class="com.Auto.UseAuTo"/>
<%
  String type="奥迪";
  ArrayList al=sAuTo.SelectAuTo(type);
  for(int i=0;i<al.size();i++)
  {
   BeanAuTo ba=(BeanAuTo)al.get(i);
%>
<tr>
  <td style="font-size: 13px"><%=ba.getName()%></td>
  <td style="font-size: 13px"><%=ba.getType()%></td>
</tr>
<%} %>
我的问题是,我要在页面进行判断分类显示,不是4个车名一起显示,是奥迪类型的显示在奥迪的大标题下,是宝马类型的显示在宝马的大标题下,我不想以直接负值(String type="奥迪";)这样的笨办法来实现。可是我用的ArrayList,一下就把所有的值全读出来了,我想判断一下,做一次查询即可。就是:
if(Type=="奥迪")
{……}
if(Type=="宝马")
{……}
请问应该如何判断,谢谢大家指教,小弟万分感激,谢谢!!!!

解决方案 »

  1.   

    楼主可以先用distinct查询吧type查出来,然后用select * from AuTo where type=?查出某一个类型的所有车名称。
      

  2.   

    查出来的时候用hashmap来存储
    Map map = new HashMap();
    map.put("宝马",ArrayList);ArrayList放宝马对应的车的名字如宝马c3
    map.put("蓝鸟",ArrayList);ArrayList放蓝鸟对应的车的名字如蓝鸟
      

  3.   


    对,使用这种方法,但是可能要面临的一个问题就是排序问题,楼主可以尝试一下comparable接口来实现。
      

  4.   

    我用distinct查出2个类型之后,应该如何放到"select * from AuTo where type=?"; 这句话的type=?里边?这是不是只能接一个值吗?2个如何接??
      

  5.   

    SQL文:
      SELECT name,type FROM AuTo ORDER BY type ASC
    将查询结果放入Map
        JDK的版本支持泛型
        Map<String,List<String>> map = new LinkedHashMap<String,List<String>>();
      不支持泛型
      Map map = new LinkedHashMap();