|
23 | 23 | import java.util.Arrays; |
24 | 24 | import java.util.Collections; |
25 | 25 | import java.util.List; |
| 26 | +import java.util.Objects; |
26 | 27 |
|
27 | 28 | /** |
28 | 29 | * A class representing a TV content rating. |
@@ -1410,6 +1411,7 @@ public final class TvContentRating { |
1410 | 1411 | private final String mRatingSystem; |
1411 | 1412 | private final String mRating; |
1412 | 1413 | private final String[] mSubRatings; |
| 1414 | + private final int mHashCode; |
1413 | 1415 |
|
1414 | 1416 | /** |
1415 | 1417 | * Creates a TvContentRating object. |
@@ -1472,7 +1474,13 @@ private TvContentRating( |
1472 | 1474 | mDomain = domain; |
1473 | 1475 | mRatingSystem = ratingSystem; |
1474 | 1476 | mRating = rating; |
1475 | | - mSubRatings = (subRatings == null || subRatings.length == 0) ? null : subRatings; |
| 1477 | + if (subRatings == null || subRatings.length == 0) { |
| 1478 | + mSubRatings = null; |
| 1479 | + } else { |
| 1480 | + Arrays.sort(subRatings); |
| 1481 | + mSubRatings = subRatings; |
| 1482 | + } |
| 1483 | + mHashCode = Objects.hash(mDomain, mRating, mSubRatings); |
1476 | 1484 | } |
1477 | 1485 |
|
1478 | 1486 | /** |
@@ -1568,4 +1576,30 @@ public final boolean contains(TvContentRating rating) { |
1568 | 1576 | return subRatings.containsAll(subRatingsOther); |
1569 | 1577 | } |
1570 | 1578 | } |
| 1579 | + |
| 1580 | + @Override |
| 1581 | + public boolean equals(Object obj) { |
| 1582 | + if (!(obj instanceof TvContentRating)) { |
| 1583 | + return false; |
| 1584 | + } |
| 1585 | + TvContentRating other = (TvContentRating) obj; |
| 1586 | + if (mHashCode != other.mHashCode) { |
| 1587 | + return false; |
| 1588 | + } |
| 1589 | + if (!TextUtils.equals(mDomain, other.mDomain)) { |
| 1590 | + return false; |
| 1591 | + } |
| 1592 | + if (!TextUtils.equals(mRatingSystem, other.mRatingSystem)) { |
| 1593 | + return false; |
| 1594 | + } |
| 1595 | + if (!TextUtils.equals(mRating, other.mRating)) { |
| 1596 | + return false; |
| 1597 | + } |
| 1598 | + return Arrays.equals(mSubRatings, other.mSubRatings); |
| 1599 | + } |
| 1600 | + |
| 1601 | + @Override |
| 1602 | + public int hashCode() { |
| 1603 | + return mHashCode; |
| 1604 | + } |
1571 | 1605 | } |
0 commit comments