Java 使用Map<;在数组列表中查找重复项;字符串,整数>;带输入命令

Java 使用Map<;在数组列表中查找重复项;字符串,整数>;带输入命令,java,Java,大家好,我正在尝试打印所有重复的元素,这工作正常,但输出不符合顺序(无论是从用户输入还是从文本文件)。 我想按顺序打印所有元素(不打印副本)。我该怎么做? 代码来自于此 谢谢@Cory Kendall的密码 **********更新问题:代码现在可以完美地与LinkedHashMap配合使用。现在,我希望输出以递增方式打印数字项目符号(即1.name1=2)。谢谢 List<String> strings = new ArrayList<String>(); // sup

大家好,我正在尝试打印所有重复的元素,这工作正常,但输出不符合顺序(无论是从用户输入还是从文本文件)。 我想按顺序打印所有元素(不打印副本)。我该怎么做? 代码来自于此 谢谢@Cory Kendall的密码

**********更新问题:代码现在可以完美地与LinkedHashMap配合使用。现在,我希望输出以递增方式打印数字项目符号(即1.name1=2)。谢谢

List<String> strings = new ArrayList<String>();
// suppose datas are entered by user incrementally or from a text files.

Map<String, Integer> counts = new HashMap<String, Integer>();

for (String str : strings) {
    if (counts.containsKey(str)) {
        counts.put(str, counts.get(str) + 1);
    } else {
        counts.put(str, 1);
    }
}

for (Map.Entry<String, Integer> entry : counts.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue());
}
List strings=new ArrayList();
//假设数据由用户增量输入或从文本文件输入。
映射计数=新的HashMap();
for(字符串str:strings){
if(计数容器(str)){
counts.put(str,counts.get(str)+1);
}否则{
计数。放置(str,1);
}
}
对于(Map.Entry:counts.entrySet()){
System.out.println(entry.getKey()+“=”+entry.getValue());
}

如果要记住地图中的插入顺序,需要使用。在你的情况下,你必须更换

Map<String, Integer> counts = new HashMap<String, Integer>();
Map counts=newhashmap();

Map counts=newlinkedhashmap();

HashMap
未排序,如果您关心插入顺序,请使用
LinkedHashMap
,如果您关心自然顺序,请使用
TreeMap

A将保留顺序

Map<String, Integer> counts = new LinkedHashMap<String, Integer>();
Map counts=newlinkedhashmap();
关于
LinkedHashMap

哈希表和链表映射接口的实现,带 可预测的迭代顺序。此实现不同于HashMap 因为它维护了一个贯穿其所有应用程序的双链接列表 条目。此链表定义迭代顺序,即 通常是将关键点插入地图的顺序 (插入顺序)

公共类查找{
公共静态void main(字符串[]args){
字符串str[]={“yogi”、“ram”、“ram”、“yogi”、“yogi”、“raju”、“raju”、“ram”、“yogi”、};
Map Map=newhashmap();
for(字符串s:str){
若有(地图集装箱箱){
map.put(s,map.get(s)+1;
}否则{
地图.put(s,1);;
}
}
对于(条目e:map.entrySet()){
System.out.println(e.getKey()+“--”+e.getValue());
}
}
}

你说1<代码>打印所有重复的元素
和2<代码>按顺序打印所有元素(不打印副本)
。你真的想要哪一个?抱歉搞混了,我想按顺序打印所有元素。THanks@user1986597:然后你应该接受帮助回答:完成,但是现在我想以递增的方式显示带有数字项目符号的列表,我如何使用上面的代码来实现这一点。Thanks@user1986597:在循环外部初始化一个
int
,并在每个循环中递增一次。欢迎您,请接受一个答案以表示感谢:)
Map<String, Integer> counts = new LinkedHashMap<String, Integer>();
public class FindDup {
    public static void main(String[] args) {
        String str[] = { "yogi", "ram", "ram", "yogi", "yogi", "yogi", "raju", "raju", "ram", "yogi", };
        Map<String, Integer> map = new HashMap<String, Integer>();
        for (String s : str) {
            if (map.containsKey(s)) {
                map.put(s, map.get(s) + 1);
            } else {
                map.put(s, 1);
            }
        }
        for (Entry<String, Integer> e : map.entrySet()) {
            System.out.println(e.getKey() + "---" + e.getValue());

        }
    }
}