объединение и пересечение между двумя связанными наборами, java

Я пытаюсь написать методы для «объединения», которые можно описать: если A, B, C - множества, имеет вид C = A.union (B). Union возвращает Set, содержащий все элементы в наборах A и B, но только один раз перечисляет дубликаты.

Моя идея для этого метода состоит в том, чтобы пересечь множество A и добавить все его элементы в набор объединений, а затем пересечь множество B, если элемент набора B уже присутствует в объединении, тогда не вставляйте его в результат, иначе вставьте все к объединению.

Это сложно для новичка, подобного мне, так как я хочу включить все 3 списка в метод (который я получаю кучу ошибок). Я уже написал несколько методов в моем классе SLinkedList для проверки и добавления элемента, но параметры берут объект из узла

/** Singly linked list .*/
public class SLinkedList {

  protected Node head;  //head node of the list
  protected int size;   //number of nodes in the list

  /** Default constructor that creates an empty list */
  public SLinkedList() {
    head = new Node(null, null);//create a dummy head
    size = 0; 

//add last
  public void addLast(Object data) {
      Node cur = head;
     //find last node
      while (cur.getNext() != null) {
          cur = cur.getNext();
      }
     //cur refers to the last node
      cur.setNext(new Node(data, null));
      size++;
  } 

//contain method to check existing elements
  public boolean contain (Object target) {
      boolean status = false;
      Node cursor;
      for (cursor = head; cursor != null; cursor = cursor.getNext()) {
          if (target.equals(cursor.getElement())) {
              status = true;
          }       
      }   
      return status;
  }

  public SLinkedList union (SLinkedList secondSet) {
      SLinkedList unionSet = new SLinkedList();
      secondSet = new SLinkedList();
      Node cursor;
      for(cursor = head.getNext(); cursor != null; cursor = cursor.getNext()) {
          unionSet.addLast(cursor.getElement());
         //traverse secondSet, if an element is existed in either set A or union
             //set, skip, else add to union set
          }
      }
    return unionSet;
  }


  }

Класс узла

/** Node of a singly linked list of strings. */
public class Node {

  private Object element;  //we assume elements are character strings
  private Node next;

  /** Creates a node with the given element and next node. */
  public Node(Object o, Node n) {
    element = o;
    next = n;
  }

  /** Returns the element of this node. */
  public Object getElement() { return element; }

  /** Returns the next node of this node. */
  public Node getNext() { return next; }

 //Modifier methods:
  /** Sets the element of this node. */
  public void setElement(Object newElem) { element = newElem; }

  /** Sets the next node of this node. */
  public void setNext(Node newNext) { next = newNext; }

}

* <Сильный> обновление * Вопрос в том, есть ли второй список, включающий public SLinkedList union (SLinkedList secondSet) , какой синтаксис я должен использовать для пересечения множества B и проверить, присутствует ли элемент набора B в результате, тогда не вставьте его в результат, иначе вставьте. Нужно ли мне создать узел для набора B и пересечь его ?, может быть метод сравнения для сравнения двух наборов за пределами метода union?

Пожалуйста помоги. Спасибо всем.

2
nl ja de
спасибо, теперь мне нужно проверить второй набор
добавлено автор Casper, источник
Я не могу сказать, в чем вопрос.
добавлено автор Louis Wasserman, источник
замените SLinkedList unionSet = null; на SLinkedList unionSet = новый SLinkedList ();
добавлено автор Bhavik Shah, источник

1 ответы

SLinkedList unionSet = null;//need a new SLinkedList() here
Node cursor;
for(cursor = head.getNext(); cursor != null; cursor = cursor.getNext()) {
    unionSet.addLast(cursor.getElement());//NPE because unionSet is null
}
1
добавлено
эй, спасибо огромное, что манекен меня
добавлено автор Casper, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async