30/09/2018, 18:53
Hỏi cách sắp xếp theo thuộc tính là String khi thêm đối tượng vào HashSet
Em muốn sắp xếp các đối tượng thêm vào hs
dựa trên thuộc tính name
vậy ở phương thức hashCode()
em phải viết như thế nào???
public class test {
public static void main(String args[])
{
HashSet hs =new HashSet();
hs.add(new State("dfh", 5));
hs.add(new State("fgh", 7));
hs.add(new State("hkh", 4));
hs.add(new State("we", 9));
hs.add(new State("jfgh", 1));
for(Iterator i=hs.iterator();i.hasNext();)
{
System.out.println(i.next());
}
}
}
public class State
{
private String name;
private int population;
public State(String name, int population)
{
super();
this.name = name;
this.population = population;
}
public String getName()
{
return this.name;
}
public int getPopulation()
{
return this.population;
}
public String toString()
{
return getName() + " - " + getPopulation();
}
@Override
public int hashCode() {
/*String s = name.substring(0, 1);
return Integer.parseInt(s);*/
}
}
Bài liên quan
anh @CuongNguyen giúp em với
HashSet doesn’t sort elements, in fact it displays them in random order. While dealing with HashSet we may come across a situation where we need to sort it explicitly. we need to write a logic to sort them when required. In this article we are going to see an example where we are sorting a HashSet using two different methods.
Output:
HashSet elements before sorting: [Pear, Guava, Apple, Banana, Orange]
HashSet elements after sorting: [Apple, Banana, Guava, Orange, Pear]
HashSet elements after using TreeSet: [Apple, Banana, Guava, Orange, Pear]
Em đọc không hiểu có thể hỏi tiếp
Cái này trong không thú vị lắm nếu dùng thế này thì ngay từ đầu ta dùng List hoặc TreeSet lưu trữ luôn thì dễ dàng hơn nhiều!
Cái em cần là ta vẫn dùng HashSet để lưu trữ nhưng nó lưu trữ các phần tử dựa vào HashCode mà HashCode lại trả về kiểu int nên ta chỉ sắp xếp được các thuộc tính có kiểu int ví dụ là:
Còn sắp xếp theo thuộc tính là kiểu String, em không biết viết thế nào??
Ở trên em đã hỏi rõ rồi đó anh, anh đọc kỹ lại sẽ hiểu ý em muốn hỏi gì đấy
Em đọc kỹ cái rep1 của anh? Anh đã nói là trong hashset không sort các phần tử bên trong nó. Mà đặc biệt là hashcode sinh ra chỉ để trả về giá trị chứ không sort. Muốn sort em phải implement comperator hoặc sử dụng gói collections như ví dụ 1 hoặc 2
Em hiểu rồi. Em cảm ơn anh nhe!