Беженец C# ищет немного справки наборов Java

'\ r' = возврат каретки и '\ n' = перевод строки.

На самом деле, при использовании их в разных операционных системах существуют разные способы поведения. В Unix это '\ n', но в Windows это '\ r' '\ n'.

8
задан oxbow_lakes 22 June 2009 в 20:41
поделиться

6 ответов

Вы хотите использовать Map

Map<String, Integer> m = new HashMap<String, Integer>();
m.put("Stop me", 11);
Integer i = m.get("Stop me"); // i == 11

Обратите внимание, что в последней строке я мог бы сказать:

int i = m.get("Stop me");

Это сокращение от (с автоматической распаковкой Java):

int i = m.get("Stop me").intValue()

Если на карте нет значения для данного ключа, get возвращает null , и это выражение вызывает исключение NullPointerException . Следовательно, всегда хорошая идея использовать упакованный тип Integer в этом случае

get возвращает null , и это выражение вызывает исключение NullPointerException . Следовательно, всегда хорошая идея использовать упакованный тип Integer в этом случае

get возвращает null , и это выражение вызывает исключение NullPointerException . Следовательно, всегда хорошая идея использовать упакованный тип Integer в этом случае

22
ответ дан 5 December 2019 в 04:52
поделиться

Используйте java.util.Map . Существует несколько реализаций:

  • HashMap : поиск O (1), не поддерживает порядок ключей
  • TreeMap : поиск O (log n), поддерживает порядок ключей, так что вы можете перебирать их в гарантированном порядке
  • LinkedHashMap : поиск O (1), перебирает ключи в том порядке, в котором они были добавлены на карту.

Вы используете их как:

Map<String,Integer> map = new HashMap<String,Integer>();
map.put("Stop me", 11);
map.put("Feed me", 12);

int value = map.get("Stop me");

Для добавления для удобства работы с коллекциями ознакомьтесь с библиотекой Google Collections . Отлично.

7
ответ дан 5 December 2019 в 04:52
поделиться

Вы используете Map в Java.

Обратите внимание, что вы не можете использовать int (или любой другой примитивный тип) в качестве общего параметр типа, но из-за автобокса он по-прежнему ведет себя почти , как если бы это был Map вместо Map . (Однако вы не хотите делать много автобоксов в коде, чувствительном к производительности.)

Map<String, Integer> entries = new HashMap<String, Integer>();
entries.put("Stop me", 11);
entries.put("Feed me", 12);
entries.put("Walk me", 13);
int value = entries.get("Stop me"); // if you know it exists
// If you're not sure whether the map contains a value, it's better to do:
Integer boxedValue = entries.get("Punch me");
if (boxedValue != null) {
    int unboxedValue = boxedValue;
    ...
}
6
ответ дан 5 December 2019 в 04:52
поделиться

Похоже, вы ищете что-то вроде HashMap

2
ответ дан 5 December 2019 в 04:52
поделиться
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("Stop Me", 11);
map.put("Feed Me", 12);
map.put("Walk Me", 13);
Integer x; // little hack
int value = (x = a.get("aaa")) == null? 0 : x;

в качестве альтернативы вы можете попробовать Enum:

enum Action {

    STOP(11),
    FEED(12),
    WALK(13);

    private final int value;

    private Action(int value) {
        this.value = value;
    }

    public int value() {
        return value;
    }

    public static Action valueOf(int value) {
        for (Action action : values()) {
            if (action.value == value) {
                return action;
            }
        }

        return null; // or a null-object
    }
}

test:

public void action() {
    Action action = Action.valueOf("FEED"); 
    // or Action.FEED for more compile-time safety
    int value = action.value();
    // instantiating by code 
    Action walk = Action.valueOf(13);
}
1
ответ дан 5 December 2019 в 04:52
поделиться

Вам определенно нужен HashMap , который является версией Java C # Dictionary .

1
ответ дан 5 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: