Java 自动向HashMap添加数字<;整数,字符串>;

Java 自动向HashMap添加数字<;整数,字符串>;,java,Java,假设我有 public HashMap<Integer, String> matchup = new HashMap<>(); public HashMap matchup=new HashMap(); 与其手动添加密钥,我如何才能按1到100的顺序添加一个数字,让我们来看看 假设我有3个用户,当他们单击一个名为将我添加到quene的按钮时,他们被添加到quene中,并使用quene中的位置定义的整数键 因此,如果第一个用户单击按钮,他将自动为键值1分配一个字符串 因

假设我有

public HashMap<Integer, String> matchup = new HashMap<>();
public HashMap matchup=new HashMap();
与其手动添加密钥,我如何才能按1到100的顺序添加一个数字,让我们来看看

假设我有3个用户,当他们单击一个名为将我添加到quene的按钮时,他们被添加到quene中,并使用quene中的位置定义的整数键

因此,如果第一个用户单击按钮,他将自动为键值1分配一个字符串

因此,如果第二个用户单击按钮,他将自动为键值2分配一个字符串

因此,如果第三个用户单击按钮,他将自动用字符串分配键值3


等等,

以下代码可能会有所帮助:

public class Click {

    private static int counter = 0;
    public static HashMap<Integer, String> matchup = new HashMap<>();

    public void onClick(String input) {
        matchup.put(counter++, input);
    }
 }
公共类点击{
专用静态整数计数器=0;
public static HashMap matchup=new HashMap();
公共void onClick(字符串输入){
matchup.put(计数器++,输入);
}
}

以下代码可能会有所帮助:

public class Click {

    private static int counter = 0;
    public static HashMap<Integer, String> matchup = new HashMap<>();

    public void onClick(String input) {
        matchup.put(counter++, input);
    }
 }
公共类点击{
专用静态整数计数器=0;
public static HashMap matchup=new HashMap();
公共void onClick(字符串输入){
matchup.put(计数器++,输入);
}
}

以下代码可能会有所帮助:

public class Click {

    private static int counter = 0;
    public static HashMap<Integer, String> matchup = new HashMap<>();

    public void onClick(String input) {
        matchup.put(counter++, input);
    }
 }
公共类点击{
专用静态整数计数器=0;
public static HashMap matchup=new HashMap();
公共void onClick(字符串输入){
matchup.put(计数器++,输入);
}
}

以下代码可能会有所帮助:

public class Click {

    private static int counter = 0;
    public static HashMap<Integer, String> matchup = new HashMap<>();

    public void onClick(String input) {
        matchup.put(counter++, input);
    }
 }
公共类点击{
专用静态整数计数器=0;
public static HashMap matchup=new HashMap();
公共void onClick(字符串输入){
matchup.put(计数器++,输入);
}
}

您可以使用将用作计数器的静态变量:

public static Integer nextId = 0;
...
...
matchup.put(++nextId, "any string...");

您可以使用将用作计数器的静态变量:

public static Integer nextId = 0;
...
...
matchup.put(++nextId, "any string...");

您可以使用将用作计数器的静态变量:

public static Integer nextId = 0;
...
...
matchup.put(++nextId, "any string...");

您可以使用将用作计数器的静态变量:

public static Integer nextId = 0;
...
...
matchup.put(++nextId, "any string...");

正如我在VA31回复的评论中提到的,你可以改进你的代码,只要保证线程安全就行了

您可以尝试以下代码:

public class Click {

private AtomicInteger counter = new AtomicInteger(0);
private Map<Integer, String> matchup = new ConcurrentHashMap<>();

public void onClick(String input) {
    matchup.put(counter.incrementAndGet(), input);
}
}
公共类点击{
私有AtomicInteger计数器=新的AtomicInteger(0);
私有映射匹配=新的ConcurrentHashMap();
公共void onClick(字符串输入){
matchup.put(counter.incrementAndGet(),输入);
}
}

正如我在VA31回复评论中提到的,您可以改进代码。只需使其线程安全即可

您可以尝试以下代码:

public class Click {

private AtomicInteger counter = new AtomicInteger(0);
private Map<Integer, String> matchup = new ConcurrentHashMap<>();

public void onClick(String input) {
    matchup.put(counter.incrementAndGet(), input);
}
}
公共类点击{
私有AtomicInteger计数器=新的AtomicInteger(0);
私有映射匹配=新的ConcurrentHashMap();
公共void onClick(字符串输入){
matchup.put(counter.incrementAndGet(),输入);
}
}

正如我在VA31回复评论中提到的,您可以改进代码。只需使其线程安全即可

您可以尝试以下代码:

public class Click {

private AtomicInteger counter = new AtomicInteger(0);
private Map<Integer, String> matchup = new ConcurrentHashMap<>();

public void onClick(String input) {
    matchup.put(counter.incrementAndGet(), input);
}
}
公共类点击{
私有AtomicInteger计数器=新的AtomicInteger(0);
私有映射匹配=新的ConcurrentHashMap();
公共void onClick(字符串输入){
matchup.put(counter.incrementAndGet(),输入);
}
}

正如我在VA31回复评论中提到的,您可以改进代码。只需使其线程安全即可

您可以尝试以下代码:

public class Click {

private AtomicInteger counter = new AtomicInteger(0);
private Map<Integer, String> matchup = new ConcurrentHashMap<>();

public void onClick(String input) {
    matchup.put(counter.incrementAndGet(), input);
}
}
公共类点击{
私有AtomicInteger计数器=新的AtomicInteger(0);
私有映射匹配=新的ConcurrentHashMap();
公共void onClick(字符串输入){
matchup.put(counter.incrementAndGet(),输入);
}
}


使用一个计数器变量,并在每次向映射添加元素时递增它?如果映射的键是一个直索引,那么您得到的可能更适合于映射的ArrayList。为了避免并发问题,请使用时间戳值;它比整数累进更安全。另一种方法是@JBNizet表示一个计数器变量,但不要忘记标记使该变量同步的方法!使用一个计数器变量,并在每次向映射添加元素时递增它?如果映射的键是一个直接索引,那么您得到的可能更适合于映射的ArrayList。为了避免并发问题,请使用时间戳值;它比整数累进更安全。另一种方法是@JBNizet表示一个计数器变量,但不要忘记标记使该变量同步的方法!使用一个计数器变量,并在每次向映射添加元素时递增它?如果映射的键是一个直接索引,那么您得到的可能更适合于映射的ArrayList。为了避免并发问题,请使用时间戳值;它比整数累进更安全。另一种方法是@JBNizet表示一个计数器变量,但不要忘记标记使该变量同步的方法!使用一个计数器变量,并在每次向映射添加元素时递增它?如果映射的键是一个直接索引,那么您得到的可能更适合于映射的ArrayList。为了避免并发问题,请使用时间戳值;它比整数累进更安全。另一种方法是@JBNizet表示一个计数器变量,但不要忘记标记使该变量同步的方法!此代码不是线程安全的。如果并行运行-您会注意到,将会有泄漏。此代码不是线程安全的。如果并行运行-您会注意到,将会有泄漏。此代码不是线程安全的。如果并行运行-您会注意到,将有泄漏。此代码不是线程安全的。如果并行运行,您会注意到,将有泄漏。您确定这是线程安全的吗?键本身不会发生冲突,但哈希(试图同时写入同一个hashbucket)现在或在HashMap的某个可能的未来/替代实现中会发生冲突吗?如果不是ConcurrentHashMap会更好。您确定它保证线程安全吗?键不会自行碰撞,但会碰撞c