Java ArrayList и HashMap на лету

Небольшое улучшение ответа Мэтта, благодаря отсутствию необходимости жестко кодировать страницу входа в систему и, при необходимости, настройку представления отказа в доступе в атрибуте:

public class AccessDeniedAuthorizeAttribute : AuthorizeAttribute
{
    public string AccessDeniedViewName { get; set; }

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        base.OnAuthorization(filterContext);

        if (filterContext.HttpContext.User.Identity.IsAuthenticated &&
            filterContext.Result is HttpUnauthorizedResult)
        {
            if (string.IsNullOrWhiteSpace(AccessDeniedViewName))
                AccessDeniedViewName = "~/Account/AccessDenied";

            filterContext.Result = new RedirectResult(AccessDeniedViewName);
        }
    }
}
50
задан Michael 3 August 2017 в 01:34
поделиться

6 ответов

List<String> list = new ArrayList<String>() {
 {
    add("value1");
    add("value2");
 }
};

Map<String,String> map = new HashMap<String,String>() {
 {
    put("key1", "value1");
    put("key2", "value2");
 }
};
95
ответ дан 7 November 2019 в 10:28
поделиться

Хороший способ сделать это - использовать Коллекции Google :

List<String> list = ImmutableList.of("A", "B", "C");

Map<Integer, String> map = ImmutableMap.of(
  1, "A",
  2, "B",
  3, "C");
30
ответ дан 7 November 2019 в 10:28
поделиться

для коротких списков:

    List<String> ab = Arrays.asList("a","b");
7
ответ дан 7 November 2019 в 10:28
поделиться

Массивы можно преобразовать to List s:

List<String> al = Arrays.asList("vote", "for", "me"); //pandering

Обратите внимание, что это не возвращает ArrayList , а произвольный экземпляр List (в данном случае это Array.ArrayList )!

Подход Бруно работает лучше всего, и его можно «на лету» рассмотреть для карт.

7
ответ дан 7 November 2019 в 10:28
поделиться

Вы имеете в виду это?

public List<String> buildList(String first, String second)
{
     List<String> ret = new ArrayList<String>();
     ret.add(first);
     ret.add(second);
     return ret;
}

...

List<String> names = buildList("Jon", "Marc");

Или вас интересует конструктор ArrayList который принимает коллекцию ? Например:

String[] items = new String[] { "First", "Second", "Third" };
// Here's one way of creating a List...
Collection<String> itemCollection = Arrays.asList(items);
// And here's another
ArrayList<String> itemList = new ArrayList<String>(itemCollection);
3
ответ дан 7 November 2019 в 10:28
поделиться

Похоже, вам нужен тип угла.

// Non mutable Angle class with a normalized, integer angle-value
public struct Angle
{
  public Angle(int value)
  {
    Value = value;
  } 

  private angle;
  public Value 
  { 
    get { return angle; } 
    private set { angle = Normalize(value); } 
  }

  public static int Normalize(int value)
  {
     if (value < 0) return 360 - (value % 360);
     return value % 360;
  }
}

public class SomeClass
{
  public Angle EyeOrientation { get; set; }
}

Если у вас есть определенный вид значения, например, углы, деньги, вес или что-то еще, всегда полезно сделать его собственным типом, даже если само значение хранится в int, decimal и т. Д. делает ваши интерфейсы более понятными и безопасными. Это не то же самое, если вы ожидаете Угол или целое число в качестве аргумента некоторого метода.

List<String> al = Arrays.asList("vote", "for", "me"); //pandering

Обратите внимание, что это не возвращает ArrayList , а произвольный экземпляр List (в данном случае это Array.ArrayList ) !

Подход Бруно работает лучше всего, и его можно сразу рассмотреть для карт. Я предпочитаю другой метод для списков (см. Выше):

Map<String,String> map = new HashMap<String,String>() {
 {
    put("key1", "value1");
    put("key2", "value2");
 }
};
29
ответ дан 7 November 2019 в 10:28
поделиться
Другие вопросы по тегам:

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