SlideShare una empresa de Scribd logo
1 de 35
Java Foundations
Lists, List<T>,
ArrayList<T>
Your Course
Instructors
Svetlin Nakov
George Georgiev
The Judge System
Sending your Solutions
for Automated Evaluation
Testing Your Code in the Judge System
 Test your code online in the SoftUni Judge system:
https://judge.softuni.org/Contests/3294
Lists in Java
Processing Variable Length
Sequences of Elements
Table of Contents
1. Lists: Overview
2. List Manipulating: Add, Delete, Insert, Clear
3. Reading Lists from the Console. Printing Lists
4. Sorting Lists and Arrays
7
Lists in Java
8
List<E> – Overview
 List<E> holds a list of elements of any type
9
List<String> names = new ArrayList<>();
// Create a list of strings
names.add("Peter");
names.add("Maria");
names.add("George");
names.remove("Maria");
for (String name : names)
System.out.println(name);
// Peter, George
List<E> – Overview (2)
10
List<Integer> nums = new ArrayList<>(
Arrays.asList(10, 20, 30, 40, 50, 60));
nums.remove(2);
nums.remove(Integer.valueOf(40));
nums.add(100);
nums.add(0, -100);
for (int i = 0; i < nums.size(); i++)
System.out.print(nums.get(i) + " ");
-100 10 20 50 60 100
Inserts an element to index
Items count
Remove by index
Remove by value (slow)
 List<E> holds a list of elements (like array, but extendable)
 Provides operations to add / insert / remove / find elements:
 size() – number of elements in the List<E>
 add(element) – adds an element to the List<E>
 add(index, element) – inserts an element to given position
 remove(element) – removes an element (returns true / false)
 remove(index) – removes element at index
 contains(element) – determines whether an element is in the list
 set(index, item) – replaces the element at the given index
List<E> – Data Structure
11
add – Appends an Element
12
10
5
2
0
Count: 1
2
3
List<Integer>
10
5
2
10
remove – Deletes an Element
13
2
5
Count:
List<Integer>
10
2
3
10
add (index, el) – Inserts an Element at Position
14
3
2
2
5
Count:
List<Integer>
-5
-5
Reading Lists from the Console
Using for Loop or String.split()
15
 First, read from the console the array length:
 Next, create a list of given size n and read its elements:
Reading Lists From the Console
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
List<Integer> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
int number = Integer.parseInt(sc.nextLine());
list.add(number);
}
 Lists can be read from a single line of space separated values:
Reading List Values from a Single Line
17
2 8 30 25 40 72 -2 44 56
String values = sc.nextLine();
List<String> items = Arrays.stream(values.split(" "))
.collect(Collectors.toList());
List<Integer> nums = new ArrayList<>();
for (int i = 0; i < items.size(); i++)
nums.add(Integer.parseInt(items.get(i)));
Convert a collection
into List
List<Integer> items = Arrays.stream(values.split(" "))
.map(Integer::parseInt).collect(Collectors.toList());
 Printing a list using a for-loop:
 Printing a list using a String.join():
Printing Lists on the Console
18
List<String> list = new ArrayList<>(Arrays.asList(
"one", "two", "three", "four", "five", "six"));
for (int index = 0; index < list.size(); index++)
System.out.printf
("arr[%d] = %s%n", index, list.get(index));
List<String> list = new ArrayList<>(Arrays.asList(
"one", "two", "three", "four", "five", "six"));
System.out.println(String.join("; ", list));
Gets an element
at given index
 Write a program to sum all adjacent equal numbers in a list of
decimal numbers, starting from left to right
 Examples:
Problem: Sum Adjacent Equal Numbers
19
3 3 6 1 12 1
8 2 2 4 8 16 16 8 16
5 4 2 1 1 4 5 8 4
Scanner sc = new Scanner(System.in);
List<Double> numbers = Arrays.stream(sc.nextLine().split(" "))
.map(Double::parseDouble).collect(Collectors.toList());
for (int i = 0; i < numbers.size() - 1; i++)
if (numbers.get(i).equals(numbers.get(i + 1))) {
numbers.set(i, numbers.get(i) + numbers.get(i + 1));
numbers.remove(i + 1);
i = -1;
}
// Continues on the next slide
Solution: Sum Adjacent Equal Numbers (1)
0
Solution: Sum Adjacent Equal Numbers (2)
21
static String joinElementsByDelimiter
(List<Double> items, String delimiter) {
String output = "";
for (Double item : items)
output += (new DecimalFormat("0.#").format(item) + delimiter);
return output;
}
String output = joinElementsByDelimiter(numbers, " ");
System.out.println(output);
 Write a program that sums all numbers in a list in the
following order:
 first + last, first + 1 + last - 1, first + 2 + last - 2, … first + n, last – n
 Examples:
Problem: Gauss' Trick
22
1 2 3 4 5 6 6 3
1 2 3 4 5 5
Solution: Gauss' Trick
3
Scanner sc = new Scanner(System.in);
List<Integer> numbers = Arrays.stream(sc.nextLine().split(" "))
.map(Integer::parseInt).collect(Collectors.toList());
int size = numbers.size();
for (int i = 0; i < size / 2; i++) {
numbers.set(i, numbers.get(i) + numbers.get(numbers.size() - 1));
numbers.remove(numbers.size() - 1);
}
System.out.println(numbers.toString().replaceAll("[[],]", ""));
 You receive two lists with numbers. Print a result list which
contains the numbers from both lists
 If the length of the two lists is not equal, just add the
remaining elements at the end of the list
 list1[0], list2[0], list1[1], list2[1], …
Problem: Merging Lists
24
1 2 3 4 5
6 7 8
1 6 2 7 3 8 4 5
// TODO: Read the input
List<Integer> resultNums = new ArrayList<>();
for (int i = 0; i < Math.min(nums1.size(), nums2.size()); i++) {
// TODO: Add numbers in resultNums
}
if (nums1.size() > nums2.size())
resNums.addAll(getRemainingElements(nums1, nums2));
else if (nums2.size() > nums1.size())
resNums.addAll(getRemainingElements(nums2, nums1));
System.out.println(resNums.toString().replaceAll("[[],]", ""));
Solution: Merging Lists (1)
25
public static List<Integer> getRemainingElements
(List<Integer> longerList, List<Integer> shorterList) {
List<Integer> nums = new ArrayList<>();
for (int i = shorterList.size(); i < longerList.size(); i++)
nums.add(longerList.get(i));
return nums;
}
Solution: Merging Lists (2)
26
Live Exercises
Reading and Manipulating Lists
Sorting Lists and Arrays
28
 Sorting a list == reorder its elements incrementally: Sort()
 List items should be comparable, e.g. numbers, strings, dates, …
Sorting Lists
List<String> names = new ArrayList<>(Arrays.asList(
"Peter", "Michael", "George", "Victor", "John"));
Collections.sort(names);
System.out.println(String.join(", ", names));
// George, John, Michael, Peter, Victor
Collections.sort(names);
Collections.reverse(names);
System.out.println(String.join(", ", names));
// Victor, Peter, Michael, John, George
Sort in natural
(ascending) order
Reverse the sorted result
 Read a number n and n lines of products. Print a numbered list
of all the products ordered by name
 Examples:
Problem: List of Products
30
4
Potatoes
Tomatoes
Onions
Apples
1.Apples
2.Onions
3.Potatoes
4.Tomatoes
A
Z
int n = Integer.parseInt(sc.nextLine());
List<String> products = new ArrayList<>();
for (int i = 0; i < n; i++) {
String currentProduct = sc.nextLine();
products.add(currentProduct);
}
Collections.sort(products);
for (int i = 0; i < products.size(); i++)
System.out.printf("%d.%s%n", i + 1, products.get(i));
Solution: List of Products
 Read a list of integers, remove all negative numbers from it
 Print the remaining elements in reversed order
 In case of no elements left in the list, print "empty"
Problem: Remove Negatives and Reverse
32
10 -5 7 9 -33 50 50 9 7 10
7 -2 -10 1 1 7
-1 -2 -3 empty
List<Integer> nums = Arrays.stream(sc.nextLine().split(" "))
.map(Integer::parseInt).collect(Collectors.toList());
for (int i = 0; i < nums.size(); i++)
if (nums.get(i) < 0)
nums.remove(i--);
Collections.reverse(nums);
if (nums.size() == 0)
System.out.println("empty");
else
System.out.println(nums.toString().replaceAll("[[],]", ""));
Solution: Remove Negatives and Reverse
Live Exercises
Sorting Lists
 …
 …
 …
Summary
35
 Lists hold a sequence of elements
(variable-length)
 Can add / remove / insert elements
at runtime
 Creating (allocating) a list:
new ArrayList<E>()
 Accessing list elements by index
 Printing list elements: String.join(…)
 …
 …
 …
Next Steps
 Join the SoftUni "Learn To Code" Community
 Access the Free Coding Lessons
 Get Help from the Mentors
 Meet the Other Learners
https://softuni.org

Más contenido relacionado

La actualidad más candente

Chapter 13 - Recursion
Chapter 13 - RecursionChapter 13 - Recursion
Chapter 13 - Recursion
Adan Hubahib
 

La actualidad más candente (20)

Java Foundations: Methods
Java Foundations: MethodsJava Foundations: Methods
Java Foundations: Methods
 
Java Foundations: Basic Syntax, Conditions, Loops
Java Foundations: Basic Syntax, Conditions, LoopsJava Foundations: Basic Syntax, Conditions, Loops
Java Foundations: Basic Syntax, Conditions, Loops
 
Collections in Java
Collections in JavaCollections in Java
Collections in Java
 
07. Arrays
07. Arrays07. Arrays
07. Arrays
 
Generics in java
Generics in javaGenerics in java
Generics in java
 
JavaFX Presentation
JavaFX PresentationJavaFX Presentation
JavaFX Presentation
 
Exception Handling
Exception HandlingException Handling
Exception Handling
 
Chapter 13 - Recursion
Chapter 13 - RecursionChapter 13 - Recursion
Chapter 13 - Recursion
 
Final JAVA Practical of BCA SEM-5.
Final JAVA Practical of BCA SEM-5.Final JAVA Practical of BCA SEM-5.
Final JAVA Practical of BCA SEM-5.
 
07 java collection
07 java collection07 java collection
07 java collection
 
Collections Framework
Collections FrameworkCollections Framework
Collections Framework
 
11. java methods
11. java methods11. java methods
11. java methods
 
Java Annotations
Java AnnotationsJava Annotations
Java Annotations
 
JAVA Collections frame work ppt
 JAVA Collections frame work ppt JAVA Collections frame work ppt
JAVA Collections frame work ppt
 
OOP V3.1
OOP V3.1OOP V3.1
OOP V3.1
 
Network programming in java - PPT
Network programming in java - PPTNetwork programming in java - PPT
Network programming in java - PPT
 
Java 8 features
Java 8 featuresJava 8 features
Java 8 features
 
Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.Java 8 Stream API. A different way to process collections.
Java 8 Stream API. A different way to process collections.
 
Method overloading and constructor overloading in java
Method overloading and constructor overloading in javaMethod overloading and constructor overloading in java
Method overloading and constructor overloading in java
 
Incremental and iterative stratergy
Incremental and iterative stratergyIncremental and iterative stratergy
Incremental and iterative stratergy
 

Similar a Java Foundations: Lists, ArrayList<T>

Labprogram.javaLinkedList.javaimport java.util.NoSuchElementEx.pdf
Labprogram.javaLinkedList.javaimport java.util.NoSuchElementEx.pdfLabprogram.javaLinkedList.javaimport java.util.NoSuchElementEx.pdf
Labprogram.javaLinkedList.javaimport java.util.NoSuchElementEx.pdf
freddysarabia1
 
Refer to my progress on this assignment belowIn this problem you w.pdf
Refer to my progress on this assignment belowIn this problem you w.pdfRefer to my progress on this assignment belowIn this problem you w.pdf
Refer to my progress on this assignment belowIn this problem you w.pdf
arishmarketing21
 
import java.util.LinkedList; import java.util.Random; import jav.pdf
import java.util.LinkedList; import java.util.Random; import jav.pdfimport java.util.LinkedList; import java.util.Random; import jav.pdf
import java.util.LinkedList; import java.util.Random; import jav.pdf
aquastore223
 
import java-util-ArrayList- import java-util-Collections- import java-.pdf
import java-util-ArrayList- import java-util-Collections- import java-.pdfimport java-util-ArrayList- import java-util-Collections- import java-.pdf
import java-util-ArrayList- import java-util-Collections- import java-.pdf
adhityalapcare
 
Chapter 7.1
Chapter 7.1Chapter 7.1
Chapter 7.1
sotlsoc
 
Write a method called uniqueNumbers that takes an int array as param.pdf
Write a method called uniqueNumbers that takes an int array as param.pdfWrite a method called uniqueNumbers that takes an int array as param.pdf
Write a method called uniqueNumbers that takes an int array as param.pdf
fashioncollection2
 

Similar a Java Foundations: Lists, ArrayList<T> (20)

Labprogram.javaLinkedList.javaimport java.util.NoSuchElementEx.pdf
Labprogram.javaLinkedList.javaimport java.util.NoSuchElementEx.pdfLabprogram.javaLinkedList.javaimport java.util.NoSuchElementEx.pdf
Labprogram.javaLinkedList.javaimport java.util.NoSuchElementEx.pdf
 
beginners_python_cheat_sheet_pcc_all (3).pptx
beginners_python_cheat_sheet_pcc_all (3).pptxbeginners_python_cheat_sheet_pcc_all (3).pptx
beginners_python_cheat_sheet_pcc_all (3).pptx
 
16. Arrays Lists Stacks Queues
16. Arrays Lists Stacks Queues16. Arrays Lists Stacks Queues
16. Arrays Lists Stacks Queues
 
Refer to my progress on this assignment belowIn this problem you w.pdf
Refer to my progress on this assignment belowIn this problem you w.pdfRefer to my progress on this assignment belowIn this problem you w.pdf
Refer to my progress on this assignment belowIn this problem you w.pdf
 
import java.util.LinkedList; import java.util.Random; import jav.pdf
import java.util.LinkedList; import java.util.Random; import jav.pdfimport java.util.LinkedList; import java.util.Random; import jav.pdf
import java.util.LinkedList; import java.util.Random; import jav.pdf
 
Java 8 Lambda Expressions
Java 8 Lambda ExpressionsJava 8 Lambda Expressions
Java 8 Lambda Expressions
 
18. Java associative arrays
18. Java associative arrays18. Java associative arrays
18. Java associative arrays
 
import java-util-ArrayList- import java-util-Collections- import java-.pdf
import java-util-ArrayList- import java-util-Collections- import java-.pdfimport java-util-ArrayList- import java-util-Collections- import java-.pdf
import java-util-ArrayList- import java-util-Collections- import java-.pdf
 
Python list
Python listPython list
Python list
 
Basic data-structures-v.1.1
Basic data-structures-v.1.1Basic data-structures-v.1.1
Basic data-structures-v.1.1
 
Beginner's Python Cheat Sheet.pdf
Beginner's Python Cheat Sheet.pdfBeginner's Python Cheat Sheet.pdf
Beginner's Python Cheat Sheet.pdf
 
GE3151_PSPP_UNIT_4_Notes
GE3151_PSPP_UNIT_4_NotesGE3151_PSPP_UNIT_4_Notes
GE3151_PSPP_UNIT_4_Notes
 
07. Java Array, Set and Maps
07.  Java Array, Set and Maps07.  Java Array, Set and Maps
07. Java Array, Set and Maps
 
Java Generics
Java GenericsJava Generics
Java Generics
 
Module-2.pptx
Module-2.pptxModule-2.pptx
Module-2.pptx
 
Python Programming: Lists, Modules, Exceptions
Python Programming: Lists, Modules, ExceptionsPython Programming: Lists, Modules, Exceptions
Python Programming: Lists, Modules, Exceptions
 
Chapter 7.1
Chapter 7.1Chapter 7.1
Chapter 7.1
 
Write a method called uniqueNumbers that takes an int array as param.pdf
Write a method called uniqueNumbers that takes an int array as param.pdfWrite a method called uniqueNumbers that takes an int array as param.pdf
Write a method called uniqueNumbers that takes an int array as param.pdf
 
ch07-arrays.ppt
ch07-arrays.pptch07-arrays.ppt
ch07-arrays.ppt
 
The Ring programming language version 1.10 book - Part 45 of 212
The Ring programming language version 1.10 book - Part 45 of 212The Ring programming language version 1.10 book - Part 45 of 212
The Ring programming language version 1.10 book - Part 45 of 212
 

Más de Svetlin Nakov

Дипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин НаковДипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин Наков
Svetlin Nakov
 
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТСвободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
Svetlin Nakov
 
Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)
Svetlin Nakov
 

Más de Svetlin Nakov (20)

BG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учителиBG-IT-Edu: отворено учебно съдържание за ИТ учители
BG-IT-Edu: отворено учебно съдържание за ИТ учители
 
Programming World in 2024
Programming World in 2024Programming World in 2024
Programming World in 2024
 
AI Tools for Business and Startups
AI Tools for Business and StartupsAI Tools for Business and Startups
AI Tools for Business and Startups
 
AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)AI Tools for Scientists - Nakov (Oct 2023)
AI Tools for Scientists - Nakov (Oct 2023)
 
AI Tools for Entrepreneurs
AI Tools for EntrepreneursAI Tools for Entrepreneurs
AI Tools for Entrepreneurs
 
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
Bulgarian Tech Industry - Nakov at Dev.BG All in One Conference 2023
 
AI Tools for Business and Personal Life
AI Tools for Business and Personal LifeAI Tools for Business and Personal Life
AI Tools for Business and Personal Life
 
Дипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин НаковДипломна работа: учебно съдържание по ООП - Светлин Наков
Дипломна работа: учебно съдържание по ООП - Светлин Наков
 
Дипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООПДипломна работа: учебно съдържание по ООП
Дипломна работа: учебно съдържание по ООП
 
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТСвободно ИТ учебно съдържание за учители по програмиране и ИТ
Свободно ИТ учебно съдържание за учители по програмиране и ИТ
 
AI and the Professions of the Future
AI and the Professions of the FutureAI and the Professions of the Future
AI and the Professions of the Future
 
Programming Languages Trends for 2023
Programming Languages Trends for 2023Programming Languages Trends for 2023
Programming Languages Trends for 2023
 
IT Professions and How to Become a Developer
IT Professions and How to Become a DeveloperIT Professions and How to Become a Developer
IT Professions and How to Become a Developer
 
GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)GitHub Actions (Nakov at RuseConf, Sept 2022)
GitHub Actions (Nakov at RuseConf, Sept 2022)
 
IT Professions and Their Future
IT Professions and Their FutureIT Professions and Their Future
IT Professions and Their Future
 
How to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a JobHow to Become a QA Engineer and Start a Job
How to Become a QA Engineer and Start a Job
 
Призвание и цели: моята рецепта
Призвание и цели: моята рецептаПризвание и цели: моята рецепта
Призвание и цели: моята рецепта
 
What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?What Mongolian IT Industry Can Learn from Bulgaria?
What Mongolian IT Industry Can Learn from Bulgaria?
 
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
How to Become a Software Developer - Nakov in Mongolia (Oct 2022)
 
Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)Blockchain and DeFi Overview (Nakov, Sept 2021)
Blockchain and DeFi Overview (Nakov, Sept 2021)
 

Último

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Último (20)

AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 

Java Foundations: Lists, ArrayList<T>

  • 3. The Judge System Sending your Solutions for Automated Evaluation
  • 4. Testing Your Code in the Judge System  Test your code online in the SoftUni Judge system: https://judge.softuni.org/Contests/3294
  • 5. Lists in Java Processing Variable Length Sequences of Elements
  • 6. Table of Contents 1. Lists: Overview 2. List Manipulating: Add, Delete, Insert, Clear 3. Reading Lists from the Console. Printing Lists 4. Sorting Lists and Arrays 7
  • 8. List<E> – Overview  List<E> holds a list of elements of any type 9 List<String> names = new ArrayList<>(); // Create a list of strings names.add("Peter"); names.add("Maria"); names.add("George"); names.remove("Maria"); for (String name : names) System.out.println(name); // Peter, George
  • 9. List<E> – Overview (2) 10 List<Integer> nums = new ArrayList<>( Arrays.asList(10, 20, 30, 40, 50, 60)); nums.remove(2); nums.remove(Integer.valueOf(40)); nums.add(100); nums.add(0, -100); for (int i = 0; i < nums.size(); i++) System.out.print(nums.get(i) + " "); -100 10 20 50 60 100 Inserts an element to index Items count Remove by index Remove by value (slow)
  • 10.  List<E> holds a list of elements (like array, but extendable)  Provides operations to add / insert / remove / find elements:  size() – number of elements in the List<E>  add(element) – adds an element to the List<E>  add(index, element) – inserts an element to given position  remove(element) – removes an element (returns true / false)  remove(index) – removes element at index  contains(element) – determines whether an element is in the list  set(index, item) – replaces the element at the given index List<E> – Data Structure 11
  • 11. add – Appends an Element 12 10 5 2 0 Count: 1 2 3 List<Integer> 10 5 2
  • 12. 10 remove – Deletes an Element 13 2 5 Count: List<Integer> 10 2 3 10
  • 13. add (index, el) – Inserts an Element at Position 14 3 2 2 5 Count: List<Integer> -5 -5
  • 14. Reading Lists from the Console Using for Loop or String.split() 15
  • 15.  First, read from the console the array length:  Next, create a list of given size n and read its elements: Reading Lists From the Console Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); List<Integer> list = new ArrayList<>(); for (int i = 0; i < n; i++) { int number = Integer.parseInt(sc.nextLine()); list.add(number); }
  • 16.  Lists can be read from a single line of space separated values: Reading List Values from a Single Line 17 2 8 30 25 40 72 -2 44 56 String values = sc.nextLine(); List<String> items = Arrays.stream(values.split(" ")) .collect(Collectors.toList()); List<Integer> nums = new ArrayList<>(); for (int i = 0; i < items.size(); i++) nums.add(Integer.parseInt(items.get(i))); Convert a collection into List List<Integer> items = Arrays.stream(values.split(" ")) .map(Integer::parseInt).collect(Collectors.toList());
  • 17.  Printing a list using a for-loop:  Printing a list using a String.join(): Printing Lists on the Console 18 List<String> list = new ArrayList<>(Arrays.asList( "one", "two", "three", "four", "five", "six")); for (int index = 0; index < list.size(); index++) System.out.printf ("arr[%d] = %s%n", index, list.get(index)); List<String> list = new ArrayList<>(Arrays.asList( "one", "two", "three", "four", "five", "six")); System.out.println(String.join("; ", list)); Gets an element at given index
  • 18.  Write a program to sum all adjacent equal numbers in a list of decimal numbers, starting from left to right  Examples: Problem: Sum Adjacent Equal Numbers 19 3 3 6 1 12 1 8 2 2 4 8 16 16 8 16 5 4 2 1 1 4 5 8 4
  • 19. Scanner sc = new Scanner(System.in); List<Double> numbers = Arrays.stream(sc.nextLine().split(" ")) .map(Double::parseDouble).collect(Collectors.toList()); for (int i = 0; i < numbers.size() - 1; i++) if (numbers.get(i).equals(numbers.get(i + 1))) { numbers.set(i, numbers.get(i) + numbers.get(i + 1)); numbers.remove(i + 1); i = -1; } // Continues on the next slide Solution: Sum Adjacent Equal Numbers (1) 0
  • 20. Solution: Sum Adjacent Equal Numbers (2) 21 static String joinElementsByDelimiter (List<Double> items, String delimiter) { String output = ""; for (Double item : items) output += (new DecimalFormat("0.#").format(item) + delimiter); return output; } String output = joinElementsByDelimiter(numbers, " "); System.out.println(output);
  • 21.  Write a program that sums all numbers in a list in the following order:  first + last, first + 1 + last - 1, first + 2 + last - 2, … first + n, last – n  Examples: Problem: Gauss' Trick 22 1 2 3 4 5 6 6 3 1 2 3 4 5 5
  • 22. Solution: Gauss' Trick 3 Scanner sc = new Scanner(System.in); List<Integer> numbers = Arrays.stream(sc.nextLine().split(" ")) .map(Integer::parseInt).collect(Collectors.toList()); int size = numbers.size(); for (int i = 0; i < size / 2; i++) { numbers.set(i, numbers.get(i) + numbers.get(numbers.size() - 1)); numbers.remove(numbers.size() - 1); } System.out.println(numbers.toString().replaceAll("[[],]", ""));
  • 23.  You receive two lists with numbers. Print a result list which contains the numbers from both lists  If the length of the two lists is not equal, just add the remaining elements at the end of the list  list1[0], list2[0], list1[1], list2[1], … Problem: Merging Lists 24 1 2 3 4 5 6 7 8 1 6 2 7 3 8 4 5
  • 24. // TODO: Read the input List<Integer> resultNums = new ArrayList<>(); for (int i = 0; i < Math.min(nums1.size(), nums2.size()); i++) { // TODO: Add numbers in resultNums } if (nums1.size() > nums2.size()) resNums.addAll(getRemainingElements(nums1, nums2)); else if (nums2.size() > nums1.size()) resNums.addAll(getRemainingElements(nums2, nums1)); System.out.println(resNums.toString().replaceAll("[[],]", "")); Solution: Merging Lists (1) 25
  • 25. public static List<Integer> getRemainingElements (List<Integer> longerList, List<Integer> shorterList) { List<Integer> nums = new ArrayList<>(); for (int i = shorterList.size(); i < longerList.size(); i++) nums.add(longerList.get(i)); return nums; } Solution: Merging Lists (2) 26
  • 26. Live Exercises Reading and Manipulating Lists
  • 27. Sorting Lists and Arrays 28
  • 28.  Sorting a list == reorder its elements incrementally: Sort()  List items should be comparable, e.g. numbers, strings, dates, … Sorting Lists List<String> names = new ArrayList<>(Arrays.asList( "Peter", "Michael", "George", "Victor", "John")); Collections.sort(names); System.out.println(String.join(", ", names)); // George, John, Michael, Peter, Victor Collections.sort(names); Collections.reverse(names); System.out.println(String.join(", ", names)); // Victor, Peter, Michael, John, George Sort in natural (ascending) order Reverse the sorted result
  • 29.  Read a number n and n lines of products. Print a numbered list of all the products ordered by name  Examples: Problem: List of Products 30 4 Potatoes Tomatoes Onions Apples 1.Apples 2.Onions 3.Potatoes 4.Tomatoes A Z
  • 30. int n = Integer.parseInt(sc.nextLine()); List<String> products = new ArrayList<>(); for (int i = 0; i < n; i++) { String currentProduct = sc.nextLine(); products.add(currentProduct); } Collections.sort(products); for (int i = 0; i < products.size(); i++) System.out.printf("%d.%s%n", i + 1, products.get(i)); Solution: List of Products
  • 31.  Read a list of integers, remove all negative numbers from it  Print the remaining elements in reversed order  In case of no elements left in the list, print "empty" Problem: Remove Negatives and Reverse 32 10 -5 7 9 -33 50 50 9 7 10 7 -2 -10 1 1 7 -1 -2 -3 empty
  • 32. List<Integer> nums = Arrays.stream(sc.nextLine().split(" ")) .map(Integer::parseInt).collect(Collectors.toList()); for (int i = 0; i < nums.size(); i++) if (nums.get(i) < 0) nums.remove(i--); Collections.reverse(nums); if (nums.size() == 0) System.out.println("empty"); else System.out.println(nums.toString().replaceAll("[[],]", "")); Solution: Remove Negatives and Reverse
  • 34.  …  …  … Summary 35  Lists hold a sequence of elements (variable-length)  Can add / remove / insert elements at runtime  Creating (allocating) a list: new ArrayList<E>()  Accessing list elements by index  Printing list elements: String.join(…)
  • 35.  …  …  … Next Steps  Join the SoftUni "Learn To Code" Community  Access the Free Coding Lessons  Get Help from the Mentors  Meet the Other Learners https://softuni.org

Notas del editor

  1. Hello, I am Svetlin Nakov from SoftUni (the Software University). Together with my colleague George Georgiev, we shall teach this free Java Foundations course, which covers important concepts from Java programming, such as arrays, lists, methods, strings, classes, objects and exceptions, and prepares you for the "Java Foundations" official exam from Oracle. In this lesson your instructor George will explain and demonstrate how to use lists in Java, how to allocate a list using the ArrayList generic class, how to access list elements by index, how to add, modify, insert, and delete elements from list and how to read, traverse and print a list. Lists in Java are like arrays: they hold an indexed sequence of elements of the same type. But unlike arrays, lists can resize. In this tutorial on Java arrays, along with the live coding examples, your instructor George will give you some hands-on exercises to gain practical experience. Are you ready? Let's start!
  2. Before the start, I would like to introduce your course instructors: Svetlin Nakov and George Georgiev, who are experienced Java developers, senior software engineers and inspirational tech trainers. They have spent thousands of hours teaching programming and software technologies and are top trainers from SoftUni. I am sure you will like how they teach programming.
  3. Most of this course will be taught by George Georgiev, who is a senior software engineer with many years of experience with Java, JavaScript and C++. George enjoys teaching programming very much and is one of the top trainers at the Software University, having delivered over 300 technical training sessions on the topics of data structures and algorithms, Java essentials, Java fundamentals, C++ programming, C# development and many others. I have no doubt you will benefit greatly from his lessons, as he always does his best to explain the most challenging concepts in a simple and fun way.
  4. Before we dive into the course, I want to show you the SoftUni judge system, where you can get instant feedback for your exercise solutions. SoftUni Judge is an automated system for code evaluation. You just send your code for a certain coding problem and the system will tell you whether your solution is correct or not and what exactly is missing or wrong. I am sure you will love the judge system, once you start using it!
  5. // Solution to problem "01. Student Information". import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String name = sc.nextLine(); int age = Integer.parseInt(sc.nextLine()); double grade = Double.parseDouble(sc.nextLine()); System.out.printf("Name: %s, Age: %d, Grade: %.2f", name, age, grade); } }
  6. In this section your instructor George will explain the concept of "Lists in Java" and how to use the ArrayList class. Lists in Java are like arrays, but they can change their size. You can add, modify, insert and delete elements from a list. Lists hold indexed sequence of elements, which can be freely modified. Let's learn how to use lists in Java and solve a few hands-on exercises to gain experience in processing sequences of elements.
  7. Did you like this lesson? Do you want more? Join the learners' community at softuni.org. Subscribe to my YouTube channel to get more free video tutorials on coding and software development. Get free access to the practical exercises and the automated judge system for this coding lesson. Get free help from mentors and meet other learners. Join now! It's free. SOFTUNI.ORG