можете ли вы создать список различных элементов в Java, не создавая для него класс

#java #spring-boot

#java #spring-boot

Вопрос:

мне нужно создать список, содержащий в каждой итерации int, дату и примечание (строку)

итак, что мне нужно, это что-то вроде этого: Список A ={[5,12/12/2020, » примечание1″],[6,11/01/2021,» примечание2″],…} что мне нужно, так это объявление для этого . и я знал, что могу изменить его на list<список< Строка >> затем изменить все обратно со String на тип вещи, который я хочу, или объявить класс, содержащий эту информацию, и составить список этого класса, но я спрашиваю, есть ли способ сделать это без этого (без изменения на String и без объявления нового класса). спасибо за любую помощь, которую вы предлагаете

Комментарии:

1. В идеале вы должны создать свой собственный класс, но поскольку вы не хотите этого делать (не уверен, почему), вы можете использовать commons.apache.org/proper/commons-lang/javadocs/api-3.9/org /…

2. Почему именно вы не хотите создавать класс? Именно так это делается в Java.

Ответ №1:

Это то, что вы ищете?

 List<Object[]> lista = new ArrayList<Object[]>();

    lista.add(new Object[] {5, LocalDate.of(12,12,2020),  "note1"});
    lista.add(new Object[] {6, LocalDate.of(11,1,2021),  "note2"});
  

Ответ №2:

Вы можете указать коллекциям просто хранить объекты, так что вы можете поместить туда практически все, что захотите, а затем извлечь это позже. Это не рекомендуется ™.

 import java.util.*;

public class Rando
{
    public static void main(String args[])
    {
        List<Object> randomStuff = new ArrayList<>();

        randomStuff.add(1);
        randomStuff.add(new Date());
        randomStuff.add("A note");

        System.out.println(randomStuff);

        Map<String, Object> randomMap = new HashMap<>();

        randomMap.put("id", 1);
        randomMap.put("date", new Date());
        randomMap.put("note", "This is another note");

        System.out.println(randomMap);
    }
}
  

Комментарии:

1. Это вариант (и не очень хороший, как вы указали), но запрашивающий хочет, чтобы каждый элемент списка содержал эти три свойства (int, Date, String). В приведенном выше примере каждое свойство является отдельным элементом.

2. Правильно, вы бы заполнили запись любым из этих способов в цикле и вставили их в какую-то внешнюю коллекцию.

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

4. Правильно, я должен был потратить время, чтобы указать это. В интерпретированном вопросе больше о том, как хранить вещи в общем контейнере без указания их типа.

5. То, что вы предложили, я думаю, более близко к тому, что хочет запрашивающий, чем я изначально думал. Поскольку каждый элемент списка (не список списков) будет содержать 3 разных типа объектов, которые им нужны. Тем не менее, это просто не кажется хорошей идеей (но отвечает на их вопрос, и вы указываете, что это не рекомендуется)

Ответ №3:

Я не думаю, что то, что вы хотите, возможно, по крайней мере, не совсем так, как вы этого хотите.

Согласно Java SE API, a List является «упорядоченной коллекцией», а Collection «представляет группу объектов, известных как ее элементы«. Смотрите Список и / или коллекцию.

Каждый «элемент» List может быть только одним объектом, поэтому наличие элемента, который на самом деле является «3» отдельными объектами, противоречит его реализации.

Но, как вы указали, этот элемент объекта может содержать все, что вы хотите. Но, как вы сказали, к сожалению, в вашем случае это нецелесообразный вариант.

Я уверен, что кто-то с большим знанием Java, возможно, может предложить какой-то метод для достижения того, чего вы хотите, но у меня такое чувство, что в этот момент вы создаете хак, чтобы обойти некоторые основные функциональные возможности List реализации, и в этом случае использование List может быть не лучшим маршрутом.

Звучит так, как будто вы описываете, List где каждый элемент содержит int , Date и String . Итак, создание класса, который содержит эти 3 свойства, которые затем могут использоваться в качестве каждого элемента объекта List , будет правильно использовать реализацию List , а не пытаться заставить его делать то, для чего он не предназначен.

Но мне любопытно посмотреть, что говорят другие, и надеюсь, что они смогут оказать больше помощи, чем я способен предоставить! Удачи!

Комментарии:

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

2. @IradAmri Звучит так, будто вы беспокоитесь о предварительной оптимизации, в которой я определенно виноват, мы все время от времени :). Класс, который вы бы создали, был бы просто контейнером для 1 примитива (int) и 2 объектов (Date и String). Даже если вы нашли способ создать список, в котором каждый элемент содержал бы эти 3 элемента, они все равно существовали бы в памяти независимо, класс, который вы бы создали, — это просто класс-оболочка, содержащий эти 3 элемента. Таким образом, создание класса для них на самом деле не будет пустой тратой места, поэтому я бы сказал, постарайтесь не беспокоиться об этом, если вы не определите узкое место.

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

4. Итак, я хотел попытаться найти общее решение. Например, что, если я делаю историю документов, например, дату изменения, если возникла проблема или жалоба в ответе таблицы жалоб от mail.. И т.д., Что привело бы к большому количеству связей и избытку бесполезных данных что, если я смогу преобразовать все это в простой элемент, который содержит все и без изменения таблицы currznt, добавив только одну таблицу без изменения остальных (например, если это была компания или что-то подобное, вы не можете изменить базу данных по своему усмотрению, и при изменении могут возникнуть проблемы)

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