Java и Python, эквивалентный из foreach php ($array как $key => $value)

Моя компания в настоящее время использует Подрывную деятельность, CVS, Подвижный и мерзавец.

, Когда мы запустили пять лет назад, мы выбрали CVS, и мы все еще используем это в моем подразделении для нашей основной разработки и выпускаем ответвление обслуживания. Однако многое из нашего использования разработчиков, Подвижного индивидуально как способ иметь частные контрольные точки без боли ответвлений CVS (и особенно слияние их) и мы начинаем использовать Подвижный для некоторых ответвлений, которые имеют приблизительно до 5 человек. Существует хороший шанс, мы наконец угробим CVS в другом году. Наше использование Подвижных выросло органически; некоторые люди все еще даже не касаются его, потому что они довольны CVS. Все, кто попробовал Подвижный, закончили тем, что были довольны им без большой части кривой обучения.

, Чем работы действительно приятно для нас с Подвижным состоят в том, что наш (домой назрел) непрерывные серверы интеграции могут контролировать разработчика Подвижные репозитории, а также магистраль. Так, люди соглашаются на свой репозиторий, заставляют наш непрерывный сервер интеграции проверять его, и затем публиковать changeset. Мы поддерживаем много платформ, таким образом, не выполнимо сделать достойный уровень ручных проверок. Другая победа - то, что слияния часто легки, и когда они тверды, у Вас есть информация, необходимо сделать хорошее задание на слиянии. Как только кто-то заставляет объединенную версию работать, они могут продвинуть свое слияние changesets, и затем никто больше не должен повторять усилие.

самое большое препятствие состоит в том, что необходимо повторно соединить проводом разработчиков и мозги менеджеров так, чтобы они убежали от единственной линейной модели ответвления. Лучшая медицина для этого является дозой Linus Torvalds, говорящего Вам, Вы глупы и ужасны при использовании централизованного SCM. Хорошие инструменты визуализации истории помогли бы, но я еще не удовлетворен тем, что доступно.

Подвижный и CVS и работать хорошо на нас с разработчиками, использующими соединение Windows, Linux и Соляриса, и я не заметил проблем с часовыми поясами. (Действительно, это не слишком твердо; Вы просто используете секунды эпохи внутренне, и я ожидал бы, что все главные системы SCM разбираются в этом).

было возможно, с изрядным количеством усилия, импортировать нашу историю CVS магистрали в Подвижный. Было бы легче, если бы люди сознательно не ввели угловые случаи в нашу историю CVS магистрали как способ протестировать инструменты миграции истории. Это включенное слияние некоторых Подвижных ответвлений в историю CVS, таким образом, проект похож на него, использовало со дня один.

Наша кремниевая проектная группа выбрала Subversion. Они - главным образом восемь часовых поясов далеко от моего офиса, и даже по довольно хорошей выделенной линии между нашей офисной Подрывной деятельностью контроль является болезненным, но осуществимым. Большое преимущество централизованных систем состоит в том, что можно потенциально проверить большие двоичные файлы в нем (например, выпуски поставщика), не делая все распределенные репозитории огромными.

Мы используем мерзавца для работы с ядром Linux. Мерзавец более подошел бы для нас, как только собственная версия Windows зрела, но я думаю, что Подвижный дизайн так прост и изящен, что мы будем придерживаться его.

15
задан 12 revs, 2 users 69% 6 June 2012 в 08:21
поделиться

8 ответов

в Python:

for key, value in stateDict.items(): # .iteritems() in Python 2.x
    print "The abbreviation for %s is %s." % (key, value)

в Java:

Map<String,String> stateDict;

for (Map.Entry<String,String> e : stateDict.entrySet())
    System.out.println("The abbreviation for " + e.getKey() + " is " + e.getValue() + ".");
34
ответ дан 1 December 2019 в 00:26
поделиться

Это модифицированный код из o948, где вы используете TreeMap вместо HashMap. Древовидная карта сохранит порядок ключей по ключу.

import java.util.*;

class Foo
{
 public static void main(String[] args)
 {
    Map<String, String> stateMap = new TreeMap<String, String>();
    stateMap.put("ALABAMA", "AL");
    stateMap.put("ALASKA", "AK");
    // ...
    stateMap.put("WYOMING", "WY");

    for (Map.Entry<String, String> state : stateMap.entrySet()) {
             System.out.printf(
                    "The abbreviation for %s is %s%n",
                    state.getKey(),
                    state.getValue()
            );
      }
    }
 }
2
ответ дан 1 December 2019 в 00:26
поделиться

В соответствии со строками ответа Александра ...

Собственный словарь Python не поддерживает порядок для максимальной эффективности его основного использования: неупорядоченное отображение ключей в значения.

Я могу придумать два обходных пути:

  1. посмотрите исходный код OrderedDict и включите его в свою программу.

  2. составьте список, содержащий ключи в указанном порядке:

     States = ['Alabamba', 'Alaska ', ...] 
    Statesd = {'Алабамба': 'AL', 'Аляска': 'AK', ...}
    для k в состояниях:
    print "Сокращение для% s -% s." % (k, состоянияd [k])
    
1
ответ дан 1 December 2019 в 00:26
поделиться

TreeMap не является ответом на ваш вопрос, потому что он сортирует элементы по ключу, а LinkedHashMap сохраняет исходный порядок. Однако TreeMap больше подходит для словаря из-за сортировки.

0
ответ дан 1 December 2019 в 00:26
поделиться

В Python упорядоченный словарь доступен в Python 2.7 (еще не выпущен) и Python 3.1. Он называется OrderedDict.

2
ответ дан 1 December 2019 в 00:26
поделиться

в java для ассоциативного массива используйте Map

import java.util.*;

class Foo
{
    public static void main(String[] args)
    {
        Map<String, String> stateMap = new HashMap<String, String>();
        stateMap.put("ALABAMA", "AL");
        stateMap.put("ALASKA", "AK");
        // ...
        stateMap.put("WYOMING", "WY");

        for (Map.Entry<String, String> state : stateMap.entrySet()) {
             System.out.printf(
                "The abbreviation for %s is %s%n",
                state.getKey(),
                state.getValue()
            );
        }
    }
}
6
ответ дан 1 December 2019 в 00:26
поделиться

Кроме того, для поддержания порядка вставки вы можете использовать LinkedHashMap вместо HashMap.

2
ответ дан 1 December 2019 в 00:26
поделиться

Другой способ сделать это на Java. Хотя лучший способ уже был опубликован, этот синтаксически ближе к вашему php-коду.

for (String x:stateDict.keySet()){
        System.out.printf("The abbreviation for %s is %s\n",x,stateDict.get(x));
    }
1
ответ дан 1 December 2019 в 00:26
поделиться
Другие вопросы по тегам:

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