Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:00,150 --> 00:00:03,570
You can sort objects that implement the comparable interface.
2
00:00:06,920 --> 00:00:10,550
The sorts of method can easily sort comparable objects.
3
00:00:13,400 --> 00:00:16,370
In this method, you will implement the comparable interface.
4
00:00:18,640 --> 00:00:21,820
The sought method can comparable objects.
5
00:00:24,450 --> 00:00:27,660
No, comparable is an interface that classes can implement.
6
00:00:30,380 --> 00:00:33,470
The comparable interface defines one method compared to.
7
00:00:37,870 --> 00:00:43,150
It also expects a generic, just like a function receives a parameter, a class or an interface can
8
00:00:43,150 --> 00:00:44,200
receive a generic.
9
00:00:47,400 --> 00:00:49,770
And the generic fildes, the method signature.
10
00:00:51,100 --> 00:00:53,620
So if you implement the comparable interface like so.
11
00:00:57,950 --> 00:00:59,270
Comparable pense.
12
00:01:02,100 --> 00:01:05,370
You'll have to override a method that's compared to Pentz.
13
00:01:08,090 --> 00:01:13,250
If you implement the compatible interface, like so comparable shirt, you'll have to override a method
14
00:01:13,260 --> 00:01:14,660
that's compared to a shirt.
15
00:01:15,120 --> 00:01:20,820
Now don't overthink what a generic is, just like a function can receive parameters and interface or
16
00:01:20,820 --> 00:01:22,340
a class can receive a generic.
17
00:01:24,780 --> 00:01:28,920
If you look back at the requirements, products are required to be sortable by price.
18
00:01:33,010 --> 00:01:37,270
We'll start with pens, the pens class will implement the comparable interface.
19
00:01:40,210 --> 00:01:43,720
And using a generic, you have to pass in the pens type.
20
00:01:45,390 --> 00:01:50,030
And right here, we're signing a contract that we're going to override this method inside the interface,
21
00:01:50,340 --> 00:01:51,660
the method is compared to.
22
00:01:59,570 --> 00:02:01,530
And right now, we've honored the contract.
23
00:02:02,210 --> 00:02:04,190
Let's play around with the generic a little.
24
00:02:06,010 --> 00:02:07,660
If I had object here.
25
00:02:12,870 --> 00:02:16,320
Then I would have to override a method that's compared to object.
26
00:02:19,300 --> 00:02:22,000
As you can see, the code wouldn't compile otherwise.
27
00:02:27,990 --> 00:02:30,330
But put pants back, that was just for example.
28
00:02:37,360 --> 00:02:43,030
And what I want to do is call this specified object in order to stay consistent with the documentation,
29
00:02:43,270 --> 00:02:44,200
you'll see why some.
30
00:02:47,130 --> 00:02:50,100
OK, so compared to receives a specified object.
31
00:02:52,370 --> 00:02:55,430
And let's imagine there's a current object that's calling this method.
32
00:03:01,490 --> 00:03:04,040
We need to compare the price of the current object.
33
00:03:05,680 --> 00:03:11,020
Against the price of the specified object, the one that's being passed in, ultimately, we're going
34
00:03:11,020 --> 00:03:14,830
to use that comparison to determine how the objects are going to be sorted.
35
00:03:18,920 --> 00:03:22,430
But it uses an integer to compare the two objects, but how?
36
00:03:23,680 --> 00:03:27,760
Let's look at the documentation, I linked it in the resources, if you want to open it and follow along
37
00:03:27,760 --> 00:03:29,950
with me, take some time to do so now.
38
00:03:30,950 --> 00:03:37,610
Anyways, scroll down to the returns line and the documentation tells us how Java interprets the result
39
00:03:37,610 --> 00:03:38,480
from compare to.
40
00:03:40,210 --> 00:03:45,640
If it sees that the energy that gets returned is negative, then it assumes the current object is less
41
00:03:45,640 --> 00:03:49,820
than the specified object if it sees that the return value is zero.
42
00:03:50,140 --> 00:03:53,920
It assumes the current object and the specified object are equal.
43
00:03:55,250 --> 00:04:00,890
And if it sees that the return value is positive, then it assumes the current object is bigger than
44
00:04:00,890 --> 00:04:02,120
the specified object.
45
00:04:04,830 --> 00:04:05,340
That's good.
46
00:04:05,370 --> 00:04:08,220
So we're going to do is minus Superdog get price?
47
00:04:12,660 --> 00:04:14,970
And the specified object get price.
48
00:04:17,070 --> 00:04:18,000
And we get an error.
49
00:04:19,010 --> 00:04:23,900
And so you might think to write brackets end in order to typecast the result, but be careful.
50
00:04:28,140 --> 00:04:34,800
What if this is 99 cents more expensive than the specified object, in that case, typecasting to end
51
00:04:34,800 --> 00:04:37,140
will cut off the decimal and return zero.
52
00:04:39,060 --> 00:04:44,460
Which, according to the documentation, would indicate that these two objects are equal, which wouldn't
53
00:04:44,460 --> 00:04:45,090
be accurate.
54
00:04:46,920 --> 00:04:52,890
So what are you going to do is use math around and that's going to round to the nearest whole number
55
00:04:53,160 --> 00:04:57,900
and then we can typecast to enter because math got round returns, a long type.
56
00:04:58,990 --> 00:05:02,470
OK, before we start sorting, let's make sure this works back in Maine.
57
00:05:03,850 --> 00:05:08,380
Create another pant's object is equal to a new pant's.
58
00:05:11,140 --> 00:05:15,970
Waist 34, one two four point nine nine red, and we'll call it Jangala.
59
00:05:20,840 --> 00:05:25,580
OK, I'll compare this object against the first one pence three, but compared to.
60
00:05:28,010 --> 00:05:28,730
Pentz.
61
00:05:36,390 --> 00:05:42,090
And we get back a positive number, which indicates Pince three has a higher price than the specified
62
00:05:42,090 --> 00:05:42,690
object.
63
00:05:46,080 --> 00:05:47,220
If we reverse it.
64
00:05:54,850 --> 00:06:00,070
We get back a negative, no, pence has a lower price than the specified object.
65
00:06:02,610 --> 00:06:04,590
And if you compare pens and pens to.
66
00:06:08,330 --> 00:06:13,760
We'll have to make this a pense object, because Penns can be of type discounted oil, but something
67
00:06:13,760 --> 00:06:16,520
that is discounted will won't necessarily be pentz.
68
00:06:20,220 --> 00:06:25,650
And here we get back zero, which means the current object calling this method has a price equal to
69
00:06:25,650 --> 00:06:26,910
the specified object.
70
00:06:29,320 --> 00:06:34,360
All right, our pants class effectively implements the comparable interface, which means now we can
71
00:06:34,360 --> 00:06:40,840
use the sorta method sort can you use compare to to determine how to sort comparable objects?
72
00:08:45,420 --> 00:08:47,550
What I want you to do is remove everything from main.
73
00:08:51,530 --> 00:08:54,890
And copy the code from the resources called sample one.
74
00:09:04,790 --> 00:09:08,290
OK, now we can sort this array using a raised sort.
75
00:09:13,950 --> 00:09:19,140
SORT is going to call the compare to method from one object against another object, and it's going
76
00:09:19,140 --> 00:09:23,070
to keep doing that until the objects are sorted from lowest the highest price.
77
00:09:23,340 --> 00:09:24,180
So let's try it out.
78
00:09:55,300 --> 00:10:01,090
So the sought method calls compared to from the second object and passes the first one as the specified
79
00:10:01,090 --> 00:10:01,600
object.
80
00:10:04,730 --> 00:10:06,950
Compared to is going to return a positive number.
81
00:10:09,140 --> 00:10:13,430
So Saut is going to know that this object is higher than this one.
82
00:10:14,650 --> 00:10:20,890
So Saut is going to know to place this object after this one because it's higher and if I just fast
83
00:10:20,890 --> 00:10:26,590
forward, it effectively compares every object in the array and depending on whether the results return
84
00:10:26,590 --> 00:10:32,260
to us, positive or negative, it knows to place the smaller objects in the beginning and the larger
85
00:10:32,260 --> 00:10:33,340
objects in the end.
86
00:10:41,470 --> 00:10:42,340
And beautiful.
87
00:10:50,510 --> 00:10:52,660
We can make the shirt class comparable as well.
88
00:10:55,000 --> 00:10:57,670
The short class is going to implement the comparable interface.
89
00:11:13,110 --> 00:11:14,550
We'll do the same thing as before.
90
00:11:28,100 --> 00:11:29,870
Wait, did I just copy and paste code?
91
00:11:30,290 --> 00:11:31,730
Yes, I did, and that's bad.
92
00:11:32,210 --> 00:11:36,670
If you ever find yourself copy and paste and code, it means you're doing something wrong.
93
00:11:37,010 --> 00:11:41,860
In this case, the shirt and pants class have the exact same implementation for compared to.
94
00:11:42,260 --> 00:11:46,010
So what if instead we define that implementation inside the parent.
95
00:11:46,460 --> 00:11:49,970
That way both shirt and pens can inherit the same method.
96
00:11:52,790 --> 00:11:54,560
So remove everything here.
97
00:12:05,600 --> 00:12:06,380
And here.
98
00:12:16,420 --> 00:12:21,670
We can make the product cost comparable, which is automatically going to make its children classes
99
00:12:21,670 --> 00:12:22,710
comparable as well.
100
00:12:38,810 --> 00:12:41,210
And I'm going to return this stock get price.
101
00:12:45,850 --> 00:12:48,400
Minus the price of the specified object.
102
00:12:59,630 --> 00:13:01,460
We're going to have to round this to a whole number.
103
00:13:08,580 --> 00:13:09,840
And typecast isn't.
104
00:13:16,360 --> 00:13:20,530
Now, both shirt and pants are going to inherit this method from their parents.
105
00:13:26,430 --> 00:13:30,570
Remove all the code in Maine and get the second code sample code sample to.
106
00:13:37,490 --> 00:13:39,860
OK, and a few breakpoints around the debugger.
107
00:13:57,160 --> 00:14:00,190
Pens can take the form of product because of polymorphism.
108
00:14:02,510 --> 00:14:07,760
Current object has a lower price than the specified object, so a negative value is going to be returned.
109
00:14:11,560 --> 00:14:17,590
And when it sees a negative value, it's going to know, OK, the current object is smaller than the
110
00:14:17,590 --> 00:14:20,590
specified object, so it needs to come before.
111
00:14:21,790 --> 00:14:27,970
And it basically keeps doing that across the entire array until it sorts the objects from lowest priced,
112
00:14:27,970 --> 00:14:28,920
the highest price.
113
00:14:29,440 --> 00:14:30,470
And one more thing.
114
00:14:30,640 --> 00:14:34,540
Notice how it's comparing a shirt object against the pants object.
115
00:14:34,870 --> 00:14:40,570
But as a product, that's polymorphism, which makes our code more flexible, which is pretty amazing.
116
00:14:41,320 --> 00:14:42,450
Let's fast forward here.
117
00:14:42,490 --> 00:14:43,750
We're not going to go through the whole thing.
118
00:14:44,540 --> 00:14:49,990
And as you can see, it sorts every product shirt or pants from lowest priced, the highest price.
119
00:14:51,140 --> 00:14:54,320
The sort of method can easily sort comparable objects.
120
00:14:56,300 --> 00:15:00,320
Sort can use compare to to determine how to sort your objects.
11758
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.