java-development-for-beginners-learnit / 19 - Java Collections Framework /002 Collection Interface_en.srt
| 1 | |
| 00:00:06,000 --> 00:00:06,000 | |
| Hello. | |
| 2 | |
| 00:00:06,000 --> 00:00:09,000 | |
| Students, in this lesson, we are going to learn what connections are. | |
| 3 | |
| 00:00:10,000 --> 00:00:15,000 | |
| This is very important topic because connection interface is implemented by all connections implementations | |
| 4 | |
| 00:00:15,000 --> 00:00:16,000 | |
| in Java. | |
| 5 | |
| 00:00:16,000 --> 00:00:23,000 | |
| That's why understanding of collection interface is a key for understanding of all other collections | |
| 6 | |
| 00:00:23,000 --> 00:00:23,000 | |
| in Java. | |
| 7 | |
| 00:00:24,000 --> 00:00:28,000 | |
| So today our primary focus is learning of collection interface. | |
| 8 | |
| 00:00:28,000 --> 00:00:35,000 | |
| I'm going to show you your middle class diagram, will understand what it is and how we can use it in | |
| 9 | |
| 00:00:35,000 --> 00:00:36,000 | |
| the future. | |
| 10 | |
| 00:00:36,000 --> 00:00:42,000 | |
| To understand a type structure during the lesson will understand what methods collection interface has | |
| 11 | |
| 00:00:42,000 --> 00:00:43,000 | |
| and why do we need them. | |
| 12 | |
| 00:00:44,000 --> 00:00:50,000 | |
| We will review abstract and default methods of collection interface and at the end of the lesson, we'll | |
| 13 | |
| 00:00:50,000 --> 00:00:52,000 | |
| look at the collection source code. | |
| 14 | |
| 00:00:52,000 --> 00:00:53,000 | |
| Let's start. | |
| 15 | |
| 00:00:53,000 --> 00:00:59,000 | |
| I suggest that our lesson from this slide on this slide, you may see visualization of what the collection | |
| 16 | |
| 00:00:59,000 --> 00:01:02,000 | |
| is to understand collection. | |
| 17 | |
| 00:01:02,000 --> 00:01:07,000 | |
| Imagine the back, the big back where you may put all your stuff. | |
| 18 | |
| 00:01:07,000 --> 00:01:15,000 | |
| You might put your product, user card and all other objects, and you can retrieve exactly user or | |
| 19 | |
| 00:01:15,000 --> 00:01:19,000 | |
| product or cards by its index like you did in array. | |
| 20 | |
| 00:01:20,000 --> 00:01:25,000 | |
| What you can do is to put all things from your back on the floor and go over them one by one. | |
| 21 | |
| 00:01:26,000 --> 00:01:31,000 | |
| We're also going to learn in the separate lessons, the specific type that is developed to go over each | |
| 22 | |
| 00:01:31,000 --> 00:01:32,000 | |
| element. | |
| 23 | |
| 00:01:32,000 --> 00:01:34,000 | |
| What else we can do with these? | |
| 24 | |
| 00:01:34,000 --> 00:01:40,000 | |
| Back to answer this question, let's take a look at collection interface and we'll learn what else we | |
| 25 | |
| 00:01:40,000 --> 00:01:42,000 | |
| can do with our bag of elements. | |
| 26 | |
| 00:01:43,000 --> 00:01:49,000 | |
| Here is a class diagram we are going to learn with your UML language that is unified model and language | |
| 27 | |
| 00:01:49,000 --> 00:01:50,000 | |
| in detail a bit later. | |
| 28 | |
| 00:01:51,000 --> 00:01:54,000 | |
| But this is what is used to call class diagram. | |
| 29 | |
| 00:01:54,000 --> 00:01:59,000 | |
| And while being a software engineer, you are going to see such diagrams very often. | |
| 30 | |
| 00:02:00,000 --> 00:02:01,000 | |
| What do we have here? | |
| 31 | |
| 00:02:01,000 --> 00:02:06,000 | |
| We can see that collection interface extends a terrible interface, a terrible interface. | |
| 32 | |
| 00:02:06,000 --> 00:02:10,000 | |
| We are going to learn in a separate lesson, the same as Iterator. | |
| 33 | |
| 00:02:10,000 --> 00:02:17,000 | |
| But in short, this is an interface that stands on top of all collections interfaces to make sure that | |
| 34 | |
| 00:02:17,000 --> 00:02:23,000 | |
| it will be possible to iterate over each element in each implementation of collection interface. | |
| 35 | |
| 00:02:24,000 --> 00:02:29,000 | |
| Today we are going to focus on collection interface and we will start learning it from this class diagram. | |
| 36 | |
| 00:02:30,000 --> 00:02:32,000 | |
| Let me give you a quick introduction regarding symbols here. | |
| 37 | |
| 00:02:33,000 --> 00:02:40,000 | |
| You can find indication whether this type interface or no, that is our interface text right above the | |
| 38 | |
| 00:02:40,000 --> 00:02:41,000 | |
| interface name. | |
| 39 | |
| 00:02:41,000 --> 00:02:46,000 | |
| We can see that it's Arabel and collections, both interfaces here. | |
| 40 | |
| 00:02:46,000 --> 00:02:52,000 | |
| We can see list of methods that each specific type has, plus some means that this method is public. | |
| 41 | |
| 00:02:53,000 --> 00:02:55,000 | |
| After that goes method signature. | |
| 42 | |
| 00:02:55,000 --> 00:02:59,000 | |
| That is method, name and method parameters followed by colon. | |
| 43 | |
| 00:02:59,000 --> 00:03:03,000 | |
| And we can find return type right after the column. | |
| 44 | |
| 00:03:03,000 --> 00:03:09,000 | |
| For example, the first method in the list in collection interface is this method without parameters | |
| 45 | |
| 00:03:09,000 --> 00:03:11,000 | |
| that returns in value. | |
| 46 | |
| 00:03:11,000 --> 00:03:12,000 | |
| Does it make sense now? | |
| 47 | |
| 00:03:13,000 --> 00:03:18,000 | |
| This knowledge will help you to understand class diagrams written down on human language. | |
| 48 | |
| 00:03:19,000 --> 00:03:21,000 | |
| And let's answer our original question. | |
| 49 | |
| 00:03:21,000 --> 00:03:23,000 | |
| What else we can do with this back? | |
| 50 | |
| 00:03:24,000 --> 00:03:26,000 | |
| We can check a number of elements in it. | |
| 51 | |
| 00:03:26,000 --> 00:03:28,000 | |
| That is what size method does. | |
| 52 | |
| 00:03:28,000 --> 00:03:31,000 | |
| We can check if this bag is empty or no. | |
| 53 | |
| 00:03:31,000 --> 00:03:34,000 | |
| We can check if this bag is empty or no. | |
| 54 | |
| 00:03:34,000 --> 00:03:41,000 | |
| That's why when it is empty, we can ask our back elements, does it contain some specific element or | |
| 55 | |
| 00:03:41,000 --> 00:03:45,000 | |
| no contains measures that will help us with this task. | |
| 56 | |
| 00:03:45,000 --> 00:03:51,000 | |
| We have also matters that control collection of elements, interior objects and methods that can turn | |
| 57 | |
| 00:03:51,000 --> 00:03:54,000 | |
| collection of elements into the array of specific types. | |
| 58 | |
| 00:03:54,000 --> 00:04:00,000 | |
| For example, if your collection contains only elements of product type, we can convert our collection | |
| 59 | |
| 00:04:00,000 --> 00:04:04,000 | |
| into of product elements, but not in the array of objects. | |
| 60 | |
| 00:04:04,000 --> 00:04:07,000 | |
| If you don't want, can you feel the difference? | |
| 61 | |
| 00:04:08,000 --> 00:04:08,000 | |
| After that? | |
| 62 | |
| 00:04:08,000 --> 00:04:11,000 | |
| We can see methods that we already kind of discuss. | |
| 63 | |
| 00:04:11,000 --> 00:04:12,000 | |
| Let us add methods. | |
| 64 | |
| 00:04:13,000 --> 00:04:15,000 | |
| I can add elements to the collection. | |
| 65 | |
| 00:04:15,000 --> 00:04:21,000 | |
| I can also remove elements from the collection and to remove elements from the collection, I have to | |
| 66 | |
| 00:04:21,000 --> 00:04:23,000 | |
| pass this exact element. | |
| 67 | |
| 00:04:24,000 --> 00:04:30,000 | |
| Another important behavior, we can check whether this collection contains all elements that other collection | |
| 68 | |
| 00:04:30,000 --> 00:04:30,000 | |
| has. | |
| 69 | |
| 00:04:30,000 --> 00:04:32,000 | |
| That is our contains all method. | |
| 70 | |
| 00:04:33,000 --> 00:04:36,000 | |
| We can add all elements from one collection to another. | |
| 71 | |
| 00:04:36,000 --> 00:04:43,000 | |
| To do this, we have to use at all method and we can remove all elements from the current collections | |
| 72 | |
| 00:04:43,000 --> 00:04:50,000 | |
| and other collection has that is our remove all method and believe you can see on the slide that message | |
| 73 | |
| 00:04:50,000 --> 00:04:51,000 | |
| that we have just discussed. | |
| 74 | |
| 00:04:51,000 --> 00:04:54,000 | |
| Take out the collection as my argument. | |
| 75 | |
| 00:04:54,000 --> 00:04:58,000 | |
| If you want, you can keep only elements that are present in both collections. | |
| 76 | |
| 00:04:58,000 --> 00:05:04,000 | |
| To do this, we have to invoke retain all methods and positive reference to another collection into | |
| 77 | |
| 00:05:04,000 --> 00:05:04,000 | |
| it. | |
| 78 | |
| 00:05:05,000 --> 00:05:11,000 | |
| In other words, this message removes from the current collection all elements that are not present | |
| 79 | |
| 00:05:11,000 --> 00:05:17,000 | |
| in the collection that we passed as a method augment the methods that are left here are also describing | |
| 80 | |
| 00:05:18,000 --> 00:05:23,000 | |
| claims method will remove all elements from the collection and as you already know, equals and harsh | |
| 81 | |
| 00:05:23,000 --> 00:05:26,000 | |
| methods that are the methods that each object should have. | |
| 82 | |
| 00:05:27,000 --> 00:05:33,000 | |
| But the idea of specifying equals and Haskett methods in the collection interface is to put stress on | |
| 83 | |
| 00:05:33,000 --> 00:05:39,000 | |
| the fact that these methods should be implemented in an implementation of collection interface and that | |
| 84 | |
| 00:05:39,000 --> 00:05:43,000 | |
| these methods should override default behavior from object class. | |
| 85 | |
| 00:05:43,000 --> 00:05:48,000 | |
| And the last but not the least, massive collection interface is an iterator. | |
| 86 | |
| 00:05:48,000 --> 00:05:51,000 | |
| Pay attention to the iterable interface description now. | |
| 87 | |
| 00:05:52,000 --> 00:05:57,000 | |
| It is also the collection interface because it implements a terrible interface. | |
| 88 | |
| 00:05:57,000 --> 00:06:03,000 | |
| As you can see, Iterator method returns object of iterator type insert. | |
| 89 | |
| 00:06:03,000 --> 00:06:07,000 | |
| This object will help you to iterate over each element in your collection. | |
| 90 | |
| 00:06:07,000 --> 00:06:13,000 | |
| We are going to learn what Iterator is in the separate class and that is how our collection interface | |
| 91 | |
| 00:06:13,000 --> 00:06:14,000 | |
| that is something. | |
| 92 | |
| 00:06:14,000 --> 00:06:15,000 | |
| What do you have to remember? | |
| 93 | |
| 00:06:16,000 --> 00:06:21,000 | |
| We just have such interface and what we can do is just to remember it just as an alphabet. | |
| 94 | |
| 00:06:21,000 --> 00:06:26,000 | |
| We don't ask why a letter is written exactly in this way. | |
| 95 | |
| 00:06:26,000 --> 00:06:30,000 | |
| We just learned that this is a letter and how it sounds. | |
| 96 | |
| 00:06:30,000 --> 00:06:36,000 | |
| And when we know that we start building words with this letter, the same as here, we just have to | |
| 97 | |
| 00:06:36,000 --> 00:06:38,000 | |
| learn collection, interface and learn how to use it. | |
| 98 | |
| 00:06:39,000 --> 00:06:45,000 | |
| So here on the screen, you may see only abstract methods that should be implemented in each collection, | |
| 99 | |
| 00:06:45,000 --> 00:06:49,000 | |
| but there are a few more other default methods in the collection interface. | |
| 100 | |
| 00:06:49,000 --> 00:06:55,000 | |
| What are they to answer this question and to give you otherwise how constantly learn new things and | |
| 101 | |
| 00:06:55,000 --> 00:07:00,000 | |
| check information that you get not only on this lesson but in any tutorial? | |
| 102 | |
| 00:07:00,000 --> 00:07:03,000 | |
| Always investigate the source code of your conversion. | |
| 103 | |
| 00:07:04,000 --> 00:07:09,000 | |
| I believe you remember how to add source code, your code editor and where you might find it. | |
| 104 | |
| 00:07:09,000 --> 00:07:14,000 | |
| Let's open collection type to investigate the source code and find methods that we didn't learn yet. | |
| 105 | |
| 00:07:15,000 --> 00:07:20,000 | |
| I press control shift and simultaneously I have to type collection. | |
| 106 | |
| 00:07:21,000 --> 00:07:27,000 | |
| I need collection from Java with your package and here this and here on the right, we might see a list | |
| 107 | |
| 00:07:27,000 --> 00:07:30,000 | |
| of all methods that are present in this interface. | |
| 108 | |
| 00:07:30,000 --> 00:07:34,000 | |
| It looks like we went over all abstract methods. | |
| 109 | |
| 00:07:34,000 --> 00:07:40,000 | |
| How I learned which method is abstract and it's is a small a letter that stands for abstract. | |
| 110 | |
| 00:07:41,000 --> 00:07:45,000 | |
| But we didn't cover in our presentation methods that have Glitnir. | |
| 111 | |
| 00:07:45,000 --> 00:07:46,000 | |
| What are they? | |
| 112 | |
| 00:07:47,000 --> 00:07:50,000 | |
| Here's the overloaded method to array it. | |
| 113 | |
| 00:07:50,000 --> 00:07:57,000 | |
| Just take specific functions that will describe how to convert collection to a right to be able to apply | |
| 114 | |
| 00:07:57,000 --> 00:07:57,000 | |
| this method. | |
| 115 | |
| 00:07:57,000 --> 00:08:03,000 | |
| We have to know how to write in the functional style in Java and understand what functional interface | |
| 116 | |
| 00:08:03,000 --> 00:08:03,000 | |
| is. | |
| 117 | |
| 00:08:04,000 --> 00:08:05,000 | |
| Don't worry. | |
| 118 | |
| 00:08:05,000 --> 00:08:08,000 | |
| This topic also will be discussed in the separate lesson. | |
| 119 | |
| 00:08:08,000 --> 00:08:13,000 | |
| I just want you to understand, at least on the high level, what these default methods are about. | |
| 120 | |
| 00:08:13,000 --> 00:08:21,000 | |
| Remove method, this method takes predicate, predicate is a specific type that can return true or false | |
| 121 | |
| 00:08:22,000 --> 00:08:26,000 | |
| based on the specific function that you will pass as a method argument to this method. | |
| 122 | |
| 00:08:26,000 --> 00:08:29,000 | |
| It will identify which element should be removed. | |
| 123 | |
| 00:08:29,000 --> 00:08:32,000 | |
| For example, you may describe functions that will return. | |
| 124 | |
| 00:08:32,000 --> 00:08:38,000 | |
| True in a case product price is more than one hundred dollars, and in case this function will be applied | |
| 125 | |
| 00:08:38,000 --> 00:08:44,000 | |
| to this specific product and collection, it will be removed and this function will be applied to each | |
| 126 | |
| 00:08:44,000 --> 00:08:50,000 | |
| element in the collection you might find while loop here and see that Iterator is used to go over the | |
| 127 | |
| 00:08:50,000 --> 00:08:56,000 | |
| collection as a condition for each element in the collection and remove it in case it satisfies the | |
| 128 | |
| 00:08:56,000 --> 00:08:57,000 | |
| condition. | |
| 129 | |
| 00:08:57,000 --> 00:09:01,000 | |
| Also, there is a default method that creates iterator. | |
| 130 | |
| 00:09:01,000 --> 00:09:07,000 | |
| Split Iterator is a specific type that can traverse and make parts of elements of the source collection. | |
| 131 | |
| 00:09:08,000 --> 00:09:11,000 | |
| And here is a method that exists in all implementations of collection. | |
| 132 | |
| 00:09:11,000 --> 00:09:18,000 | |
| Interface Stream Method joins the collection into stream of elements or in other words, sequential | |
| 133 | |
| 00:09:18,000 --> 00:09:19,000 | |
| stream of elements. | |
| 134 | |
| 00:09:20,000 --> 00:09:26,000 | |
| String Mapei was introduced in Java version eight and it was a breakthrough in this course in separate | |
| 135 | |
| 00:09:26,000 --> 00:09:31,000 | |
| lesson will be on stream API and we'll learn how to use it as a practical exercise. | |
| 136 | |
| 00:09:31,000 --> 00:09:35,000 | |
| Will even rewrite our home tasks with the help of the Stream API. | |
| 137 | |
| 00:09:36,000 --> 00:09:38,000 | |
| And here is a massive, transparent stream. | |
| 138 | |
| 00:09:39,000 --> 00:09:44,000 | |
| According to documentation, it returns possible parallel stream with the current collection at its | |
| 139 | |
| 00:09:44,000 --> 00:09:44,000 | |
| source. | |
| 140 | |
| 00:09:46,000 --> 00:09:51,000 | |
| Now, let's recap what we have learned today, so they've learned what the connection is, we try to | |
| 141 | |
| 00:09:51,000 --> 00:09:54,000 | |
| imagine collection is a back for our understanding. | |
| 142 | |
| 00:09:55,000 --> 00:09:59,000 | |
| The day you saw your first UML diagram, class diagram. | |
| 143 | |
| 00:09:59,000 --> 00:10:05,000 | |
| Now you know how to read class diagrams to understand the type of description we reviewed all abstract | |
| 144 | |
| 00:10:05,000 --> 00:10:07,000 | |
| methods in collection interface. | |
| 145 | |
| 00:10:07,000 --> 00:10:10,000 | |
| And after that, we reviewed the collection before methods. | |
| 146 | |
| 00:10:10,000 --> 00:10:14,000 | |
| Also during the lesson we investigated source code of collection interface. | |
| 147 | |
| 00:10:15,000 --> 00:10:17,000 | |
| That's all what I have for you for today. | |
| 148 | |
| 00:10:17,000 --> 00:10:18,000 | |
| Thanks a lot for your attention. | |
| 149 | |
| 00:10:18,000 --> 00:10:20,000 | |
| See you in the next lesson. | |