java 重复判定在赋值问题

packageother;publicclassFruitDate{/**水果种类*/privateStringfruitKind;/**数量*/privateStrin... package other;

public class FruitDate {

/** 水果种类 */
private String fruitKind;
/** 数量 */
private String num;

/**
* 水果种类的取得
* @return fruitKind 水果种类
*/
public String getFruitKind() {
return fruitKind;
}
/**
* 水果种类的设定
* @param fruitKind 水果种类
*/
public void setFruitKind(String fruitKind) {
this.fruitKind = fruitKind;
}
/**
* 数量的取得
* @return num 数量
*/
public String getNum() {
return num;
}
/**
* 数量的设定
* @param num 数量
*/
public void setNum(String num) {
this.num = num;
}
}

Java code

package justDoit;

import java.util.ArrayList;
import java.util.List;

import other.FruitDate;

public class Test {

public static void main(String[] args) {

inputList();
}

public static void inputList() {

List<FruitDate> listTemp =new ArrayList <FruitDate>();

FruitDate listData = new FruitDate();
FruitDate listData2 = new FruitDate();
FruitDate listData3 = new FruitDate();
FruitDate listData4 = new FruitDate();
FruitDate listData5 = new FruitDate();
FruitDate listData6 = new FruitDate();

listData.setFruitKind("香蕉");
listTemp.add(listData);
listData2.setFruitKind("桔子");
listTemp.add(listData2);
listData3.setFruitKind("苹果");
listTemp.add(listData3);
listData4.setFruitKind("桔子");
listTemp.add(listData4);
listData5.setFruitKind("香蕉");
listTemp.add(listData5);
listData6.setFruitKind("香蕉");
listTemp.add(listData6);

for (int j=0; j < listTemp.size() ; j++ ) {

System.out.println(listTemp.get(j).getFruitKind());
}
}
}
List内容
香蕉
桔子
苹果
桔子
香蕉
香蕉

怎么实现将相同的水果种类个数相加放到num里
结果
香蕉 3
桔子 2
苹果 1
桔子 2
香蕉 3
香蕉 3
展开
 我来答
月光雪松
2012-04-26 · TA获得超过476个赞
知道小有建树答主
回答量:338
采纳率:100%
帮助的人:233万
展开全部

呵呵,简单啊,你自己判断一下就可以了。我们在放进列表的时候判断一下。

有点的注意,我把num 该为了int方便计算

代码入下:

public class FruitDate {

    /** 水果种类 */

    private String fruitKind;

    /** 数量 */

    private int num;//改为int

    /**

     * 水果种类的取得

     * @return fruitKind 水果种类

     */

    public String getFruitKind() {

        return fruitKind;

    }

    /**

     * 水果种类的设定

     * @param fruitKind 水果种类

     */

    public void setFruitKind(String fruitKind) {

        this.fruitKind = fruitKind;

    }

    /**

     * 数量的取得

     * @return num 数量

     */

    public int getNum() {

        return num;

    }

    /**

     * 数量的设定

     * @param num 数量

     */

    public void setNum(int num) {

        this.num = num;

    }

}

import java.util.ArrayList;

import java.util.List;

public class Test {

    public static void main(String[] args) {

        inputList();

    }

    public static void inputList() {

        List<FruitDate> listTemp =new ArrayList <FruitDate>();

        FruitDate listData = new FruitDate();

        FruitDate listData2 = new FruitDate();

        FruitDate listData3 = new FruitDate();

        FruitDate listData4 = new FruitDate();

        FruitDate listData5 = new FruitDate();

        FruitDate listData6 = new FruitDate();

        listData.setFruitKind("香蕉");

        addFruit(listTemp,listData);

        

        listData2.setFruitKind("桔子");

        //不在直接放进去,而是调用我们自己写的方法

        addFruit(listTemp,listData2);

        listData3.setFruitKind("苹果");

        addFruit(listTemp,listData3);

        listData4.setFruitKind("桔子");

        addFruit(listTemp,listData4);

        listData5.setFruitKind("香蕉");

        addFruit(listTemp,listData5);

        listData6.setFruitKind("香蕉");

        addFruit(listTemp,listData6);

        for (int j=0; j < listTemp.size() ; j++ ) {

             //输出水果名称和数量

            System.out.println(listTemp.get(j).getFruitKind()+"  num:"+listTemp.get(j).getNum());

        }

    }

    //专门添加水果的方法

    protected static void addFruit(List<FruitDate> listTemp, FruitDate fruit){

     for(int i=0;i<listTemp.size();i++){

     FruitDate aFruit=listTemp.get(i);

     if(aFruit.getFruitKind().equals(fruit.getFruitKind())){

                                                //如果水果已经存在,统计+1

     listTemp.get(i).setNum(aFruit.getNum()+1);

     return;

     }

     }

     //不存在就把这个水果放进去,并把统计数设置为1

     fruit.setNum(1);

     listTemp.add(fruit);

    }

}

怎么样,很简单的吧。O(∩_∩)O~

Lonelee_l
2012-04-21 · TA获得超过124个赞
知道答主
回答量:26
采纳率:0%
帮助的人:34.9万
展开全部
你这样写每加入一个水果就要维护多个变量,实现起来不好,不如写一个类来管理所有的水果。

/**
* 水果种类数量管理类
*
*/
class FruitManager {

private static FruitManager instance;

/**
* 水果种类列表<种类名称,数量>
*/
private Map<String, Integer> fruits = new HashMap<String, Integer>();

/**
* 私有化构造方法
*/
private FruitManager(){

}

/**
* 取得管理类的实例
* @return 管理类实例
*/
public static FruitManager getInstance(){
if (null == instance) {
instance = new FruitManager();
}
return instance;
}

/**
* 将某个种类的水果计数加一
* @param name 种类名称
*/
public void addFruit(String name){
if (fruits.containsKey(name)) {
int count = fruits.get(name);
fruits.put(name, ++count);
} else {
fruits.put(name, 1);
}
}

/**
* 得到水果种类的列表
* @return
*/
public Map<String, Integer> getFruits() {
return fruits;
}
}
更多追问追答
追问
数据其实是从DB里取的在这里只是为了方便看
追答
那么我还是不太清楚你的具体问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cjwmy1013
2012-04-22 · 超过10用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:34.8万
展开全部
检举 | 2012-4-21 17:23 Lonelee_l | 四级
你这样写每加入一个水果就要维护多个变量,实现起来不好,不如写一个类来管理所有的水果。

/**
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Java_Mr
2012-04-21 · TA获得超过216个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:104万
展开全部
重新循环listTemp,判断水果的名称,声明对应水果名称的个数的计数器,然后在循环将个数set进去
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-04-22
展开全部
这个类的设计,有问题。
追问
1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式