Boa noite,
Preciso fazer um método que compare duas listas (simplesmente( encadeadas e retorne uma nova lista com os elementos em comuns…
Estou batendo a cabeça pq nem sei por onde começar…
Boa noite,
Preciso fazer um método que compare duas listas (simplesmente( encadeadas e retorne uma nova lista com os elementos em comuns…
Estou batendo a cabeça pq nem sei por onde começar…
No exemplo vou usar String pois não sei quanto o tipo de objeto da sua lista então é só substituir.
List<String> list3 = new ArrayList();
for(String txt1: lista1){
for(String txt2: lista2){
if(txt1.equals(txt2)){
list3.add(txt1);
}
}
}
Obrigada… mas não sei se é bem isto
minha classe List tem os seguintes atributos…
public class List {
private Node firstNode;
private Node lastNode;
private String name; // string like "list" used in printing
e tb tem a classe Node:
class Node {
private Object data;
private Node nextNode;
public Node( Object object ) {
this( object, null );
}
// create Node that refers to Object and to next Node
public Node( Object object, Node node ) {
data = object;
nextNode = node;
}
// return reference to data in node
public Object getData() {
return data; // return Object in this node
}
public void setData (Object element){
data = element;
}
// return reference to next node in list
public Node getNext() {
return nextNode; // get next node
}
public void setNext(Node o)
{
nextNode = o;
}
} // end class Node
e o meu método é este:
//Crie um novo método para a classe List que receba 2 listas por parâmetro e retorne uma nova lista contendo os elementos
// comuns às duas recebidas por parâmetro, conforme a assinatura a seguir:
public List comuns(List l1, List l2)
Eu não estou sabendo como comparar cada item da lista, se uso getData(), equals… como passar por cada nodo da lista…
Vê se isso ajuda
public class List {
private Node firstNode;
private Node lastNode;
private String name; // string like "list" used in printing
private Node [] lista;
public Node getFirstNode(){
return lista[0];
}
public void add(Node node){
lista = new Node[lista.length +1];
lista[lista.length] = node;
}
public Node getNode(int index){
return lista[index];
}
public Node getLastNode(){
return lista[lista.length -1];
}
public List comuns(List l1, List l2){
List list = new List();
for(int i = 0; i < l1.lista.length;i++){
for(int j = 0; j < l2.lista.length;j++){
if(l1.getNode(i).equals(l2.getNode(j))){
list.add(l1.getNode(i));
}
}
}
return list;
}
}
Vê se isso ajuda
public class List {
private Node firstNode;
private Node lastNode;
private String name; // string like "list" used in printing
private Node [] lista;
public Node getFirstNode(){
return lista[0];
}
public void add(Node node){
Node lista1 = new Node[lista.length +1];
for(for int i; i < lista.lenght; i++){
lista1[i] = lista[i];
}
lista1[lista.length] = node;
lista = lista1;
}
public Node getNode(int index){
return lista[index];
}
public Node getLastNode(){
return lista[lista.length -1];
}
public List comuns(List l1, List l2){
List list = new List();
for(int i = 0; i < l1.lista.length;i++){
for(int j = 0; j < l2.lista.length;j++){
if(l1.getNode(i).equals(l2.getNode(j))){
list.add(l1.getNode(i));
}
}
}
return list;
}
}
também não esqueça de sobrescrever o equals da classe Node.
Certo, obrigada. Consegui fazer com suas dicas.