All language subtitles for 018 Sorting Objects The Comparable Interface_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian Download
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian
pl Polish
pt Portuguese
pa Punjabi
ro Romanian
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
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.