gpt4 book ai didi

java - 在 ArrayList 中查找匹配的字符串出现

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:46:07 25 4
gpt4 key购买 nike

我有一个 ArrayList<String>包含表示为字符串的日期,格式为 yyyy-MM-dd ,例如:

ArrayList<String> dates = new ArrayList<>(); 
dates.add("1991-02-28");
dates.add("1991-02-28");
dates.add("1994-02-21");

我想知道相同的次数String (日期)出现在列表中。在上面的示例中,我想实现以下输出:

1991-02-28, 2
1994-02-21, 1

我试过下面的代码

    ArrayList<String> dates = new ArrayList<>();
dates.add("1991-02-28");
dates.add("1991-02-28");
dates.add("1994-02-21");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
HashMap<String, String> dateCount = new HashMap<String, String>();

String first = dates.get(0);
int count = 1;
dateCount.put(first, String.valueOf(count));
for (int i = 1; i < dates.size(); i++) {
if (first.equals(dates.get(i))) {
count++;
} else {
first = dates.get(i);
dateCount.put(dates.get(i), String.valueOf(count));
count = 0;
}
}
for (String date : dates) {
String occ = dateCount.get(date);
System.out.println(date + ", " + occ);
}

但是它会打印

1991-02-28, 1
1991-02-28, 1
1994-02-21, 2

我累了,卡住了,把 SO 作为最后的手段。感谢您的帮助。

最佳答案

我可能遗漏了一些东西,但看起来您可以像这样简单地做一些事情,只需在 HashMap 中保留日期计数,然后迭代 HashMap 以获得输出:

    ArrayList<String> dates = new ArrayList<>();
dates.add("1991-02-28");
dates.add("1991-02-28");
dates.add("1994-02-21");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
HashMap<String, Integer> dateCount = new HashMap<String, Integer>();

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

String date = dates.get(i);
Integer count = dateCount.get(date);
if (count == null){
dateCount.put(date, 1);
}
else{
dateCount.put(date, count + 1);
}

}
for(String key : dateCount.keySet()){
Integer occ = dateCount.get(key);
System.out.println(key + ", " + occ);
}

输出:

1991-02-28, 2
1994-02-21, 1

关于java - 在 ArrayList<String> 中查找匹配的字符串出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30041393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com