No video

#95 Comparator vs Comparable in Java

  Рет қаралды 173,214

Telusko

Telusko

Күн бұрын

Check out our courses:
Enterprise Java Spring Microservices: go.telusko.com...
Coupon: TELUSKO10 (10% Discount)
Master Java Spring Development : go.telusko.com...
Coupon: TELUSKO20 (20% Discount)
For More Queries WhatsApp or Call on : +919008963671
Udemy Courses:
Spring: go.telusko.com...
Java:- go.telusko.com...
Java Spring:- go.telusko.com...
Java For Programmers:- go.telusko.com...
Python : go.telusko.com...
Git : go.telusko.com...
Docker : go.telusko.com...
website : courses.telusk...
In this lecture we will learn:
- What is Comparator in Java?
- How to give your implementation for sorting?
- What is Comparable in Java?
- Difference between Comparable & Comparator
#1
- From the Java 1.7 version, it is not compulsory to mention the generic type on the right-hand side if you have already mentioned it on the left-hand side.
- A collection class has lots of methods. The collection class belongs to the util package.
- We can sort a list or an ArrayList by using the method sort of collection class
Collections.sort();
- If we want to apply our own logic in sorting, then we have to use a comparator with sorting in collections.
- Comparator is also an interface.
- We have a method called compare() in the comparator interface.
- We can use an interface by implementing a class or through an anonymous class.
- Compare method works on an algorithm where it compares two values and then swaps them.
Comparator Integer com= new Comparator Integer()
{
public int compare(Integer i, Integer j)
{
statements;
}
};
- So, a comparator is an interface through which you can specify your own concept of sorting.
#2
- Integer class implements a Comparable interface. So by default, sort works for Integer.
- If you want to do natural sorting on any other non-defined class, you can implement something called the Comparable.
- Comparable is present in the lang package.
- Comparable has a method known as compareTo().
- You have to define the method comapreTo() in a class, that is implementing Comparable.
class Student implements Comparable Student
{
public int compareTo( Student that){
statements;
}
}
Here, that is a variable.
- We can also override the logic by using Comparator even if we have implements the Comparable interface.
- Lambda expression can also be used with Comparator as it is a functional interface.
#3
Difference between Comparable & Comparator:
- Comparable provides a single sorting sequence while the Comparator provides multiple sorting sequences.
- In Comparable, actual gets modified while in Comparator, the original class does not get affected.
- Comparable gives the compareTo() method for sorting while Comparator gives the compare() method to sort elements.
Github repo : github.com/nav...
Instagram : / navinreddyofficial
Linkedin : / navinreddy20
Discord : / discord
Java:- bit.ly/JavaUde...
Spring:- bit.ly/SpringU...
More Learning :
Java :- bit.ly/3x6rr0N
Python :- bit.ly/3GRc7JX
Django :- bit.ly/3MmoJK6
JavaScript :- bit.ly/3tiAlHo
Node JS :- bit.ly/3GT4liq
Rest Api :-bit.ly/3MjhZwt
Servlet :- bit.ly/3Q7eA7k
Spring Framework :- bit.ly/3xi7buh
Design Patterns in Java :- bit.ly/3MocXiq
Docker :- bit.ly/3xjWzLA
Blockchain Tutorial :- bit.ly/3NSbOkc
Corda Tutorial:- bit.ly/3thbUKa
Hyperledger Fabric :- bit.ly/38RZCRB
NoSQL Tutorial :- bit.ly/3aJpRuc
Mysql Tutorial :- bit.ly/3thpr4L
Data Structures using Java :- bit.ly/3MuJa7S
Git Tutorial :- bit.ly/3NXyCPu
Donation:
PayPal Id : navinreddy20
www.telusko.com

Пікірлер: 123
@naul2k74
@naul2k74 Жыл бұрын
You literally teach and explain everything about sorting with object in 15 mins that my professor wasn't able to do in 2 hours. Good job and keep doing these things because it's really helpful and valuable to a fresher like me
@Noah-zc6mv
@Noah-zc6mv Жыл бұрын
So glad you're updating your older videos. Helpful as always! 😁
@suhailsharieff155
@suhailsharieff155 8 ай бұрын
Navin sir.... Really fond of u..... I sat for 5 hrs to understand it.... Now im crystal clear
@Democracy_Manifest
@Democracy_Manifest Жыл бұрын
Good video. Thanks for leaving in the errors so we can learn.
@varsheethtv2459
@varsheethtv2459 Жыл бұрын
The last 2 mins are very insightful!! 😍😍
@tarekabushaheen7593
@tarekabushaheen7593 3 ай бұрын
10/10 video and demonstration, absolutely love the dynamic, following along and coding beside you helps to learn efficiently
@AmeyChittar
@AmeyChittar Жыл бұрын
Hi Navin. as usual great video.. but most importantly comparator and comparable have always been things ive never understood.... until now.. the way you have explained is amazing and always wait for your amazing videos. and by the way the growth of your presentation and teaching skills have become better and better and we love it. Thanks a lot and will be waiting for lots more videos.
@rhea1149
@rhea1149 8 ай бұрын
best java instructor i’ve ever come across
@moviecraze6079
@moviecraze6079 2 ай бұрын
Heck of a video! I have been trying to understand the differences for a long time, finally you cleared all of my doubts.
@dypsking3414
@dypsking3414 Жыл бұрын
Thank you Mr. You made it very simple and easy!
@xacademia9646
@xacademia9646 Жыл бұрын
you know the person teaching you about java is legit when he is bald hehe. subscribed :)
@tsum3489
@tsum3489 Жыл бұрын
My teacher in University who's teaching us java is also bald🤣 and he even looks so much like this youtuber!!
@shraddhashetty8659
@shraddhashetty8659 10 ай бұрын
Sorting the String based on the length: public class PractComparator { public static void main(String[] arg) { Comparator com = new Comparator() { @Override public int compare(String o1, String o2) { return o1.length() - o2.length(); } }; List fruit = new ArrayList(); fruit.add("Banana"); fruit.add("Mandarin"); fruit.add("PineApple"); fruit.add("Apple"); Collections.sort(fruit,com); System.out.println(fruit); } }
@pratikkumarsingh8114
@pratikkumarsingh8114 11 ай бұрын
Great, got my concepts cleared . Thank you , sir!!!👍👍👍👍👍👍👍👍👍👍👍👍👍👍
@karanraut4417
@karanraut4417 8 ай бұрын
@telusko I loved your teaching style Naveen Reddy Sir, It is not necessary for a Comparator to return -1 or 1 it can actually return any negative or positive integer only the sign matters. even 0 is allowed i guess. this caused me confusion but you should have also mentioned it at the end for more nerdy people. package java4AdvancedCollections; import java.util.TreeSet; public class TreeSetExample { public static void main(String[] args) { // Creating a TreeSet of integers (natural ordering) TreeSet treeSet = new TreeSet(); // Adding elements to the TreeSet treeSet.add(10); treeSet.add(5); treeSet.add(20); treeSet.add(15); // Printing the TreeSet (elements will be in ascending order) System.out.println("TreeSet: " + treeSet); // Creating a TreeSet with a custom comparator for descending order TreeSet descendingTreeSet = new TreeSet((a, b) -> { if (a > b) { return -2; } else { return 2; } }); // Adding elements to the descending TreeSet descendingTreeSet.add(10); descendingTreeSet.add(5); descendingTreeSet.add(20); descendingTreeSet.add(15); // Printing the descending TreeSet (elements will be in descending order) System.out.println("Descending TreeSet: " + descendingTreeSet); // Performing operations specific to NavigableSet interface System.out.println("Ceiling of 12: " + treeSet.ceiling(12)); System.out.println("Floor of 12: " + treeSet.floor(12)); } }
@Sumanth_Siddareddy
@Sumanth_Siddareddy 9 ай бұрын
thanks for your explanation, sir. It helps me to understand comparable and comparator.
@vikrantsingh2804
@vikrantsingh2804 5 ай бұрын
I must say this was one of the best videos explaining comparator and comparable concept.
@adityarao7249
@adityarao7249 Жыл бұрын
Love your videos, learn new thing every time.
@beinghuman63393
@beinghuman63393 Жыл бұрын
Excellent ❤❤ , feeling enjoyed the functional usage at the end
@franciscomambo4120
@franciscomambo4120 5 ай бұрын
Just discovered this video and the explanation is awesome, it almost blew my mind
@shriharis.s3296
@shriharis.s3296 Күн бұрын
Here i have a doubt. Comparable is a functional interface. So we can override onlt compareTo() method and it is fine. But Comparator method is not a functional interface. How can we just override only menthod which is compare() and Java dosen't gives an error?
@vinethasuresh3488
@vinethasuresh3488 Жыл бұрын
wonderful video, it helps me to understand the concept very clear . Example you are providing is just awesome sir. keep doing these kind of videos sir. thanks a lot.
@priyanshukhullar-tc7ss
@priyanshukhullar-tc7ss 10 ай бұрын
Awesome guruji shukriya
@ManojPatil-z8m
@ManojPatil-z8m Ай бұрын
Hats off to you, sir! 🙌
@gyanendramaurya1796
@gyanendramaurya1796 5 ай бұрын
When i was a student in 2015 then also i used to come and watch java videos here. I now have almost 5 years of experience and when some Java work comes I come here again to refresh my memory. Thank you Navin. It feels like nostalgia sometimes watching your videos
@gurrammahenderreddy4586
@gurrammahenderreddy4586 Жыл бұрын
TASK : import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; class Hello { public static void main(String a[]) { Comparator com = new Comparator() { public int compare(String i, String j) { if(i.length() < j.length()) return 1; else return -1; } }; List names = new ArrayList(); names.add("Navin"); names.add("Navin Reddy"); names.add("Telusko"); names.add("Navin Telusko"); Collections.sort(names, com); System.out.println(names); } }
@statuslover1510
@statuslover1510 Жыл бұрын
Correct 👍
@Progamer-fq8st
@Progamer-fq8st 6 ай бұрын
Code for sorting string based on length of the string: public static void main(String args[]) { Comparator com = new Comparator() { public int compare(String i, String j){ if(i.length() > j.length()){ return 1; } else{ return -1; } } }; List strs = new ArrayList(); strs.add("Irene"); strs.add("Seulgi"); strs.add("Wendy"); strs.add("Joy"); strs.add("Yeri"); Collections.sort(strs, com); System.out.println(strs); } // Output is [Joy, Yeri, Wendy, Irene, Seulgi]
@abrorallaberganov6293
@abrorallaberganov6293 Ай бұрын
Great Explanation. Thanks
@rahuljmd
@rahuljmd 2 ай бұрын
Homework: import java.util.*; class Solution { public static void main(String[] args) { // Write your code here Comparator com=new Comparator(){ //jai mata di : Anonymous Inner class public int compare(String s1, String s2){ if(s1.length()>s2.length()){ return 1; } else return -1; } }; List al=new ArrayList(); al.add("Rahul"); al.add("DK"); al.add("J"); Collections.sort(al,com); System.out.println(al); } }
@emmaruhcheva3658
@emmaruhcheva3658 3 ай бұрын
amazing video, gave me the summary i needed!
@uLise4Life
@uLise4Life 10 ай бұрын
Had to watch an entire tutorial just because I thought I don't undertand java. After this video. i'm like OH MY GOD !!!!!!!!!
@deepthimalepatiii247
@deepthimalepatiii247 6 ай бұрын
Reddy ji! No words Thanks for your explanation
@abhinavmishra9690
@abhinavmishra9690 Жыл бұрын
Understood today the real concept behind comparator and comparable
@mikedelta658
@mikedelta658 7 ай бұрын
Now, I understood those concepts. Thanks
@student_03
@student_03 Жыл бұрын
thats a great video covered all that i needed thank you
@lovemishra8137
@lovemishra8137 2 ай бұрын
Nice explaination
@sai-dx1vb
@sai-dx1vb 8 ай бұрын
How you intantiated the comparator because comparator is an interface and we cannot instantiate interface?
@shankil2975
@shankil2975 10 ай бұрын
Excellent video. Well explained. Can you add a comment here on how to sort based on more than one field? Say name and age assuming student names are duplicated. thanks
@inspiredomkar1239
@inspiredomkar1239 Жыл бұрын
Logic to sort elements based on the length of the string import java.util.Comparator; import java.util.*; class Solution { public static void main(String[] args) { Comparator com = new Comparator(){ public int compare(String a , String b){ if(a.length() > b.length()) return 1; else return -1; } }; List nums = new ArrayList(); nums.add("Python"); nums.add("C++"); nums.add("Java"); nums.add("Django"); nums.add("SpringBoot"); nums.add("Spring"); Collections.sort(nums , com); System.out.println(nums); } }
@lxy2670
@lxy2670 Жыл бұрын
i love you man. I finally got it!
@leonsvideos
@leonsvideos Жыл бұрын
Great explanation, thank you so much!
@tej3679
@tej3679 11 ай бұрын
Thanks for the awesome explanation sir🎉
@zeldaking2429
@zeldaking2429 Жыл бұрын
Thank you. very clear and helpful!
@nischalofchrist
@nischalofchrist Жыл бұрын
This is great explanation.
@harshsuchak8370
@harshsuchak8370 Жыл бұрын
Awesome Explanation!
@soumyadeepchatterjee2189
@soumyadeepchatterjee2189 7 ай бұрын
Very helpful, thank you.
@swacharahman5084
@swacharahman5084 Жыл бұрын
This video is tooo goood. THANK you
@karanraut4417
@karanraut4417 8 ай бұрын
@telusko it is not necessary for a Comparator to return -1 or 1 it can actually return any negative or positive integer only the sign matters. {even 0 is allowed i guess}
@jeffro8807
@jeffro8807 6 ай бұрын
your videos are awesome man
@kidoo1567
@kidoo1567 4 ай бұрын
Thanx jhonny
@akshaysilgari2097
@akshaysilgari2097 8 ай бұрын
Great explanation
@awkward_adi
@awkward_adi Жыл бұрын
Thank you so much for this.
@devabdul
@devabdul Жыл бұрын
Thank you for valuable video ❤️
@aashuk
@aashuk 10 ай бұрын
Nice explanation. which IDE is that ? - got it. Visual Studio
@macedoedit5797
@macedoedit5797 9 ай бұрын
Great video, thanks !
@hmmgmm2841
@hmmgmm2841 Жыл бұрын
something meaningful to me
@rubavelana8012
@rubavelana8012 3 күн бұрын
In nums.add(e:8); What is the purpose of e:
@santoshchhetrithapa3573
@santoshchhetrithapa3573 Жыл бұрын
thank u sir very helpful . all clear now . Okay I have
@stargaming3103
@stargaming3103 Жыл бұрын
Sir what is meaning of 1 and -1 . I didn't understand that
@prateekgoel7154
@prateekgoel7154 14 күн бұрын
Awesome video !!!
@francksgenlecroyant
@francksgenlecroyant 11 ай бұрын
Navin Reddy never disappoints
@hygef-v4
@hygef-v4 Ай бұрын
thanks
@ketansharma6955
@ketansharma6955 Жыл бұрын
great video sir
@hadse1234
@hadse1234 Жыл бұрын
Very good videoes!
@srikanthatthota2151
@srikanthatthota2151 4 ай бұрын
what if i try to implement Comparator on Student class, Navin reddy please explain this scenario
@mrchaitu7
@mrchaitu7 Ай бұрын
Cannot make a static reference to the non-static field compare some times i am getting this error in quick fix i got add static static Comparator com = new Comparator() { then it solved
@bharath3207
@bharath3207 11 ай бұрын
you are the best
@AmitSingh-xc9qe
@AmitSingh-xc9qe 17 күн бұрын
Thankyou sir
@gayathridhana1000
@gayathridhana1000 Жыл бұрын
Thanks
@SugamSangeetwdSavita
@SugamSangeetwdSavita Жыл бұрын
Do we always need to use Array List for comparator or can it be used for array also??
@user-bb7ym2qk9h
@user-bb7ym2qk9h 10 ай бұрын
I think no We can use any collection Correct me if I am wrong
@user-nl1rv9sm1o
@user-nl1rv9sm1o 3 ай бұрын
sir can u upload generics concept
@ESECYogeshS
@ESECYogeshS Жыл бұрын
Sir the collection is not a class it's an Interface
@Forty3Stories
@Forty3Stories Жыл бұрын
Collections is a class but Collection is an interface 😊
@user-fm9sm6ho1u
@user-fm9sm6ho1u Жыл бұрын
Nuvu king mava🤗
@abhishekk3561
@abhishekk3561 Жыл бұрын
I have a doubt .... how many times this swapping happens??
@rahuljmd
@rahuljmd 2 ай бұрын
Synopsis: If you want to give class the power to compare its object on its own then use Comparable otherwise use Comparator to define logic and pass its object in the Collections.sort() method....
@ABHIJEETBHUJADE
@ABHIJEETBHUJADE 11 күн бұрын
Can anyone help me waht is (a:) this label oprator why we use it
@Vaishnav-zk2tf
@Vaishnav-zk2tf Жыл бұрын
can any body tell me why return 1 and -1 is used .
@actandrepeat
@actandrepeat Жыл бұрын
Yes please..
@Manjot_singh2002
@Manjot_singh2002 6 ай бұрын
7:28 import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class first { public static void main(String[] args) throws IOException { Comparator comp = new Comparator() { public int compare(String s, String t) { if (s.length() < t.length()) return 1; else return -1; // throw new UnsupportedOperationException("Unimplemented method 'compare'"); } }; List col=new ArrayList(); col.add("aaaaa"); col.add("aa"); col.add("aaaa"); col.add("a"); Collections.sort(col, comp); System.out.println(col); } }
@nazeebahmed1050
@nazeebahmed1050 10 ай бұрын
I have a quetion, why by returning 1 , the swapping is happenning?It doesn't make sense to me,plz explain
@audiomac
@audiomac 6 ай бұрын
Hello! Returning 1 means that a is greater than b. Returning -1 means b is greater than a. Returning 0 means a equals b. I hope this helps!
@ooogabooga5111
@ooogabooga5111 3 ай бұрын
You are explaining saying sort() works using bubblesort in the background, which need not be the case, don't give wrong info. In case of java it uses, duel pivot quick sort sort alogithm. Why you pass in comparator, you are only letting the sort know how to compare the values, not the whole sorting.
@abhijeetkulkarni8246
@abhijeetkulkarni8246 Жыл бұрын
Sir please try to make videos with white screen
@priyanshukhullar-tc7ss
@priyanshukhullar-tc7ss 10 ай бұрын
Thankyou Reddy Ji lots of love.
@sumantagorai5880
@sumantagorai5880 9 ай бұрын
1 for swap & -1 for no swap
@-GANGUPALLIMAHAMMED
@-GANGUPALLIMAHAMMED 10 ай бұрын
Comparator is an interface so how object will created??
@SharavananSrinivasan
@SharavananSrinivasan 10 ай бұрын
we are implementing the logic with lambda expression
@sharabugnanesh3098
@sharabugnanesh3098 Жыл бұрын
7:20 import java.util.List; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class compa { public static void main(String[] args) { Comparator y = new Comparator() { public int compare(String i, String j) { if (i.length() > j.length()) return 1; else return -1; } }; List names = new ArrayList(); names.add("Gnani"); names.add("Gnan"); names.add("Chapathi"); names.add("Gnanesh"); names.add("navin mava"); Collections.sort(names, y); System.out.println(names); } }
@codework2434
@codework2434 11 ай бұрын
Line no: 8 --> You have to specify Comparator on right side as well, its compulsory 3:03 . But I dono why it works without it.
@sharabugnanesh3098
@sharabugnanesh3098 11 ай бұрын
​​@@codework2434 it's new update from official java it's unnecessary to mention on creating object of Comparator But in case of anonymous class we should! do you understand?
@codework2434
@codework2434 11 ай бұрын
@@sharabugnanesh3098 So, in your code above you left to mention the type, right ?
@sharabugnanesh3098
@sharabugnanesh3098 11 ай бұрын
@@codework2434 yes I need to mention at left
@codework2434
@codework2434 11 ай бұрын
@@sharabugnanesh3098 Thanks about the "official java update"
@abdulwadoodh5757
@abdulwadoodh5757 Жыл бұрын
How did you replace nums to studs?
@kushagrasahni4597
@kushagrasahni4597 Жыл бұрын
its just find and replace
@aminesaber467
@aminesaber467 Жыл бұрын
import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; public class ChallengLQREA { public static void main(String[] args) { Comparator cmp = new Comparator() { public int compare(String o1, String o2) { if(o1.length() < o2.length()) return -1; else return 1 ; } }; ArrayList SortStrings = new ArrayList(); SortStrings.add("Amine"); SortStrings.add("Saberrr"); SortStrings.add("Aichaa"); SortStrings.add("Bahtiiii"); Collections.sort(SortStrings,cmp ); System.out.println(SortStrings); }
@sayantanhalder1056
@sayantanhalder1056 Ай бұрын
Sorting string by length package Collection; import java.util.*; public class SortStringByLen { public static void main(String[] args) { ArrayList ob = new ArrayList(); ArrayList ob1 = new ArrayList(); Comparator c1 = new Comparator() { public int compare(String i ,String j){ if(i.length()>j.length()){ return 1; } else{ return -1; } } }; Scanner sc = new Scanner(System.in); System.out.println("Enter the names: "); String str; int len; for(int i=0;i
@sudeepbansal5234
@sudeepbansal5234 Жыл бұрын
You are awesome 👏👏👏
@mirhaidar632
@mirhaidar632 Жыл бұрын
what is the IDE he is using?
@zakirdeshmukh9916
@zakirdeshmukh9916 Жыл бұрын
Vs code
@sruthigudmella3322
@sruthigudmella3322 Жыл бұрын
but IntelliJ IDEA works better
@Shri577
@Shri577 Ай бұрын
package basics; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class demo { public static void main(String[] args) { Comparator com = new Comparator() { public int compare(String i, String j) { if(i.length()
@kashishswami3268
@kashishswami3268 8 ай бұрын
14:03
@abhishekkumargupta9548
@abhishekkumargupta9548 Жыл бұрын
opiest explaination
@dominicdumenil861
@dominicdumenil861 7 ай бұрын
import java.util.List; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Student { public static void main(String[] args) { Comparator com = ( i, j) -> s1.length()>s2.length()? 1 : -1; List names = new ArrayList(); names.add("Nathan"); names.add("Dominic"); names.add("Nikita"); names.add("Sharon"); names.add("Jessica"); Collections.sort(names, com); System.out.println(names); } }
@yashjoshi5709
@yashjoshi5709 Жыл бұрын
aaj mai alien banne vaala tha sir but aaj bhi merko aadhi cheeze samajh nahi aayi
@hiibuddy
@hiibuddy 9 ай бұрын
Ohh bhupendra jogi 😂😂😂
@maleeshasandakalum6213
@maleeshasandakalum6213 Жыл бұрын
❤❤❤❤❤❤❤❤
@ROSHAN-HARI-BALAJE
@ROSHAN-HARI-BALAJE 2 ай бұрын
Ternary Operator ❌ Tatari Operator ✔
@akshaysilgari2097
@akshaysilgari2097 8 ай бұрын
Got lamda expression clear from u.
@actandrepeat
@actandrepeat Жыл бұрын
What if two students have the same age?
@rohitkulkarni1261
@rohitkulkarni1261 Ай бұрын
Fucking awesome❤
#96 Need of Stream API in Java
7:04
Telusko
Рет қаралды 58 М.
Interview Question | Comparable vs Comparator in Java
12:58
Telusko
Рет қаралды 643 М.
Underwater Challenge 😱
00:37
Topper Guild
Рет қаралды 42 МЛН
КТО ЛЮБИТ ГРИБЫ?? #shorts
00:24
Паша Осадчий
Рет қаралды 3,8 МЛН
#94 Map in Java
10:03
Telusko
Рет қаралды 80 М.
#26 Stack And Heap in Java
12:37
Telusko
Рет қаралды 235 М.
Bjarne Stroustrup: C++ | Lex Fridman Podcast #48
1:47:13
Lex Fridman
Рет қаралды 1 МЛН
Set and HashSet in Java - Full Tutorial
20:43
Coding with John
Рет қаралды 213 М.
Stream API in Java
26:04
Telusko
Рет қаралды 313 М.
Why You Shouldn't Nest Your Code
8:30
CodeAesthetic
Рет қаралды 2,7 МЛН
.equals() vs. == in Java - The Real Difference
8:48
Coding with John
Рет қаралды 185 М.