Вы должны использовать Date
, DateComponents
и Calendar
вместо NSDate
, NSDateComponents
и NSCalendar
. Затем старый синтаксис необходимо обновить до последней версии Swift
. Также вам нужно изменить константу (let
) interval
и anchorComponents
на переменную (var
) при изменении значений. Ниже приведен фиксированный фрагмент,
let calendar = Calendar.current
var interval = DateComponents()
interval.day = 7
// Set the anchor date to Monday at 3:00 a.m.
var anchorComponents = calendar.dateComponents([.day, .month, .year, .weekday], from: Date())
let offset = (7 + (anchorComponents.weekday ?? 0) - 2) % 7
anchorComponents.day = (anchorComponents.day ?? 0) - offset
anchorComponents.hour = 3
Можно использовать Карту и Список (это интерфейсы, реализованные больше чем одним способом к Вам выбрать самое соответствующее в Вашем случае).
Для получения дополнительной информации проверьте учебные руководства на Карту и Список, и возможно необходимо запустить с учебного руководства по Наборам.
Пример:
import java.util.*;
public class Foo {
public static void main(String[] args) {
Map<String, List<String>> m = new HashMap<String, List<String>>();
List<String> l = new LinkedList<String>();
l.add("col_value_1");
l.add("col_value_2");
//and so on
m.put("col_name_1",l); //repeat for the rest of the colnames
//then, to get it you do
List<String> rl = m.get("col_name_1");
}
}
Попытайтесь использовать a Map<String, List<String>>
. Это позволит Вам использовать Строки в качестве ключей / индексы во внешнюю карту и получать результат, являющийся списком Строк как значения. Вы, вероятно, захотите использовать a HashMap
для внешней карты и ArrayList
для внутренних списков.
Если Вы хотите некоторый чистый код, который подобен PHP, который Вы дали для инициализации его, можно сделать что-то вроде этого:
Map<String, List<String>> columns = new HashMap<String, List<String>>() {{
put("col_name_1", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
put("col_name_2", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
put("col_name_n", Arrays.asList("col_val_1", "col_val_2", "col_val_n"));
}};
Вы хотите Карту, которые включаются примерно чем-либо. HashMaps работают в большинстве случаев.
Что-то вроде этого.
List<String> col1Vals = new java.util.ArrayList<String>();
col1Vals.add("col_value_1");
col1Vals.add("col_value_2");
Map<String, List<String>> map = new HashMap<String, List<String>>();
map.put("col_name_1", col1Vals);
Если Вы хотите что-то более простое, библиотека Ленга свободного городского населения имеет MultiMap.
Будьте предупреждены, что Вектор является унаследованным кодом для платформы Наборов. Это синхронизирует доступ к своим элементам, который замедляет производительность. Для большинства вариантов использования для использования Списка не нужен этот вид потокобезопасности, и даже если бы Вы сделали, то я был бы более склонен использовать CopyOnWriteArrayList.