Как назначить несколько разных типов информации для одного имени? - PullRequest
0 голосов
/ 30 мая 2019

Извините, если вопрос был задан неправильно, но я делаю окончательный проект в CSP, где я хочу создать систему сортировки в Java 1.8.

Я использовал Hashmaps для хранения элементов в прошлом, но, очевидно, они могут хранить только до 2 элементов, Я хочу сделать что-то вроде:

<String,Double,Int,Int,String>
sortPls.put("Jackson",8.2,12,6000,"A");

как мне это сделать и есть ли более простой способ?

Я использую этот сайт Repl.it, это мой первый год кодирования.

public static HashMap<String,Double,Int,Int,String> sortPls= new HashMap<String,Double,Int,Int,String>();
  public static void setList(){
sortPls.put("Jackson",8.2,12,6000,"A");

  }

Я ожидал, что Hashmaps будет содержать более 2 элементов, но он вернул ошибку, ограничивающую элементы до 2, при этом типы данных после первых 2 возвращаются как не могут найти символ.

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Вы должны сделать что-то вроде этого

public class Data {

    private String name;
    private int val1;
    private long val2;
    private char val3;

    public Data (String name, int val1, long val2, char val3) {
        this.name = name;
        this.val1 = val1;
        this.val2 = val2;
        this.val3 = val3;
    }
    public String getName() {
        return name;
    }
    public int getVal1() {
        return val1;
    }
    public long getVal2() {
        return val2;
    }
    public char getVal3() {
        return val3;
    }
}

Использование ...

public static HashMap<String, Data> sortPls= new HashMap(); 
public static void setList(){ 
    Data d = new Data("A",32,12L,'u');
    sortPls.put("Jackson",d);
}
0 голосов
/ 30 мая 2019

Вы все еще можете использовать HashMap, вам просто нужно составить списки значений, в которых хранятся ваши значения.Обратите внимание, что я определил список для хранения Object типов данных, чтобы он был наиболее инклюзивным, но вы можете изменить его для хранения любого типа данных.

   Map<String, List<Object>> data = new java.util.HashMap<>();
   data.put("Jackson", new ArrayList<>(Arrays.asList(8.2,12,6000,"A")));

   for (Map.Entry<String, java.util.List<Object>> entry : data.entrySet()) {
       System.out.printf("Entry %s contains:%n", entry.getKey());
       for (List<Object> value : data.values()) {
           System.out.println(value.toString());
       }
   }
...