Loading...
Ivailo_Kodov avatar Ivailo_Kodov 97 Точки

Сплитване и клониране на ArrayList. Kak ?

Искам да попитам има ли начин как да се прочете input-a и да се сплитне директно към ArrayList? Както примерно при масивите?

Защото аз го права като първо ги сплитвам в масив, а после с foreach ги вкарвам в листата.. , има ли по-малко хамалски начин ? :)

Тагове:
0
Java Advanced
naskoni avatar naskoni 68 Точки

Ползвай Arrays.asList(), като в скобите подаваш масива или операция, която връща масив.

Например така:

    String input = scanner.nextLine();
	List<String> list = Arrays.asList(input.split(" "));

 

1
27/03/2016 14:55:44
Ivailo_Kodov avatar Ivailo_Kodov 97 Точки

Пропуснал съм и другия ми въпрос. Как мога да направа клонинг на ArrayList . Пробрах да дам ArrayList<> newList = new ArrayList<>().clone(originalList) . Ама не става.. и др начини пробвах .. искам функцията clone() ,а не с for ... да я наблъскам със стойности..

0
raging avatar raging 92 Точки

http://www.java2s.com/Tutorial/Java/0140__Collections/CopyingandCloningListspublicObjectclone.htm това мисля ще ти свърши да схванеш мейн идеата :)

0
kaloyannikov avatar kaloyannikov 531 Точки
ArrayList<String> list1 = new ArrayList<>();
list1.add("pesho");
list1.add("gosho");
ArrayList<String> list2 = new ArrayList<>();
list2.addAll(list1);

Така?

1
Gesh4o avatar Gesh4o Trainer 305 Точки

Здравей,

Виж кода по-надолу, мисля, че той отговаря и на двата ти въпроса:

        Scanner scanner = new Scanner(System.in);

        // 1 2 3 4 - input
        String input = scanner.nextLine();
        List<String> originalList = Arrays.asList(input.split("\\s+"));
        originalList.add("5");

        ArrayList<String> destinationList = new ArrayList<>(originalList);
        HashSet<String> destinationSet = new HashSet<>();
        destinationSet.addAll(originalList);
        destinationList.add("15");

        // [1, 2, 3, 4, 15] - output
        System.out.println(destinationList);

Понеже метода Arrays.asList ти връща резултата като списък от данни под формата на interface-а List(за разлика от C#, където е IList). Тук има важни няколко неща. Ти можеш да подадеш тази абстрактна структура директно при създаването на нов списък/множество и така да копираш стойността. Обаче имай предвид, че метода връщайки List, в този List няма имплементирана логика за извършване на някои операции. Например ако на originalList кажеш .аdd() -  то ще изгърми runtime с ексепшън: "UnsupportedOperationException". Обаче ако на същия този List се опиташ да вземеш дължината, ще ти върне очакваната стойност( .size() ). Имай предвид, че имаш малка функционалност и може да имаш нужда подадедния вход да го wrapp-неш в структура, чиято функционалност вече може да ти е от полза(както сме направили по-горе). 

Надявам се да съм помогнал! :)

2
30/03/2016 08:40:05
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.