我有两个类,一个是News类,有两个属性Stirng title,String content.
  还有一个NewsList类,有一个属性 Set<News>  newslist;
  问题是我往set里面加入一条新闻,这条新闻的标题必须是集合中没有的才能加进去,请问算法该怎么实现啊,修改,删除都比较容易,但是如何写增加?求助一下!!

解决方案 »

  1.   

    重写 hashCode()和equals()方法
    package com.xiaoqi;public class News {
    String title;
    String content;
    public String getTitle() {
    return title;
    }
    public void setTitle(String title) {
    this.title = title;
    }
    public String getContent() {
    return content;
    }
    public void setContent(String content) {
    this.content = content;
    }
    @Override
    public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((content == null) ? 0 : content.hashCode());
    result = prime * result + ((title == null) ? 0 : title.hashCode());
    return result;
    }
    @Override
    public boolean equals(Object obj) {
    if (this == obj)
    return true;
    if (obj == null)
    return false;
    if (getClass() != obj.getClass())
    return false;
    News other = (News) obj;
    if (content == null) {
    if (other.content != null)
    return false;
    } else if (!content.equals(other.content))
    return false;
    if (title == null) {
    if (other.title != null)
    return false;
    } else if (!title.equals(other.title))
    return false;
    return true;
    }
    }package com.xiaoqi;import java.util.HashSet;
    import java.util.Set;public class Test { public static void main(String[] args) {

    String title = "文章标题";
    String content = "文章内容";

    News news1 = new News();
    news1.setTitle(title);
    news1.setContent(content);

    News news2 = new News();
    news2.setTitle("文章" + "标题");
    news2.setContent("文章" + "内容");

    System.out.println(news1.equals(news2));

    Set<News> set = new HashSet<News>();
    set.add(news1);
    set.add(news2);

    System.out.println(set.size()); }}
    注:News类是用Eclipse Generate Source 自动生成的。
      

  2.   

    把NewsList的newslist换成HashSet。HashSet的一个基本的特性就是加入的时候只有不重复才加入,否则根本加入不了的。