Массив дат в Java

В 2015 году я не смог получить ни одного из этих рабочих
, поэтому я написал немного кода

1: у меня был вектор вектора длинных длинных элементов

std::vector<std::string> vs(M_coins + 1);
for (unsigned long long i = 0; i <= M_coins; i++) {
    std::for_each(memo[i].begin(), memo[i].end(), [i, &vs](long long &n) {
        vs[i].append(std::to_string(n));
        });
}
// now vs is ready for use as vs[0], vs[1].. so on, for your debugger

в основном то, что я сделал, было преобразовано вектор в строку. у меня был вектор вектора, поэтому у меня был строковый вектор для заполнения.

2: если у вас есть только вектор длинных длинных элементов , просто конвертируйте, как показано ниже:

std::vector<std::string> s;
std::for_each(v1.begin(), v1.end(), [&s](long long &n) {
    s.append(std::to_string(n));
    });
// now s is ready for use, for your debugger

надеюсь, что это помогло.

7
задан Madison 26 November 2009 в 01:14
поделиться

4 ответа

Точно так же, как и для String и Int, вы просто помещаете внутрь разные типы:

Date [] dates = {
    new Date(), 
    new Date()
 };

Объявлен массив размера два с двумя датами.

Вы также можете инициализировать нулевыми значениями. :

 Date [] dates = new Date[2];

Или добавьте более важные значения:

 Date [] dates = {
    getDateFromString("25/11/2009"), 
    getDateFromString("24/12/2009")
 };

.... 
public Date getDateFromString( String s ) {
    Date result = ...// parse the string set the value etc. 
    return result;
}

EDIT

... но можно ли как-нибудь завершить то, что вы делали в методе getDateFromString?

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

Вам просто нужно использовать метод SimpleDateFormate.parse () (унаследованный от класса DateFormat)

  simpleDateFormatInstance.parse( "24/12/2009" ); // returns christmas 2009.

Вот полный рабочий пример:

import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
import static java.lang.System.out;

public class DateArrayTest {

    private static final SimpleDateFormat dateFormat 
                   = new SimpleDateFormat("dd/MM/yyyy");
    private static final Date invalidDate = new Date(0);


    // test creating a date from a string.
    public static void main( String [] args ) { 
        Date [] randomDates = {
            fromString("01/01/2010"), // new year
            fromString("16/09/2010"), // 200 yrs Mex indepence 
            fromString("21/03/2010"), // uhhmm next spring?
            fromString("this/should/fail"), // invalid date.
        };

        for( Date date: randomDates ) {
            print( date );
        }
    }

    /**
     * Creates a date from the given string spec. 
     * The date format must be dd/MM/yyyy ie. 
     * 24 december 2009 would be: 24/12/2009
     * @return invalidDate if the format is invalid.
     */
    private static final Date fromString( String spec ) {
        try {
            return dateFormat.parse( spec );
        } catch( ParseException dfe ) {
            return invalidDate;
        }
    }
    private static final void print( Date date ) {
        if( date == invalidDate ) {
            out.println("Invalid date");
        } else {
            out.println( dateFormat.format( date ) );
        }
    }
}
21
ответ дан 6 December 2019 в 06:36
поделиться

you можно использовать массив java.util.

4
ответ дан 6 December 2019 в 06:36
поделиться

Или вы можете использовать API коллекций и класс Calendar,

import java.util.*;

List<Calendar> dates = new ArrayList<Calendar>(5); // initial size
dates.add( Calendar.getInstance() );
1
ответ дан 6 December 2019 в 06:36
поделиться

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

НО, вы обычно получаете представление о естественном порядке. Вы вставляете их в том порядке, в котором они находятся на диске. Это то, чего у вас нет в полной версии SQL Server, который всегда высвобождает свободное место с предыдущих страниц.

int[] array = new int[] { int.7, int.42 };
String[] array = new String[] {String."Hello", String."world" };

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

Таким образом, мы бы избавились от общественности статические конечные переменные в String и сделайте это вместо этого:

String[] array = new String[] { new String("Hello"), new String("world") };

Теперь к реальности:

Когда компилятор java, когда он видит «Hello» или «world», он делает что-то подобное «new String (« Hello »)» - это немного умнее, так что если у вас есть «Hello» 20 раз в файле, это будет только одна копия (и некоторые другие вещи тоже).

Когда вы говорите:

new int[100]; you get an array of 100 ints all set to 0.
new String[100]; you get an array of 100 Strings all pointing to null.
new Data[100]; you get 100 Dates all pointing to null.

Поскольку строки и даты являются указывая на null, вам нужно выделить новый объект для каждого из них. Причина, по которой вам не нужно говорить «новый» с помощью String, заключается в том, что компилятор обрабатывает это специально.

0
ответ дан 6 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

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