Laborator 10

Lab 10

Problema 1

Raspunsul difera in functie de necesitatile aplicatiei.

In cazul in care avem nevoie de accesul rapid al unui element din lista, de preferat ar fi sa folosim ArrayList, iar in cazul in care vrem sa putem sterge si insera usor elementele in lista, recomandat ar fi sa folosim LinkedList.

Problema 2

import java.util.*;

import java.io.*;

public class Main {

public static void main(String[] args) {

try {

InputStreamReader inputKeyboard = new InputStreamReader(System.in);

BufferedReader buffKeyboard = new BufferedReader(inputKeyboard);

LinkedList stringList=new LinkedList();

LinkedList stringList2=new LinkedList();

System.out.print("Dati sirul de caractere:\n");

String linie="";

boolean flag=false;

while(!flag){

linie = buffKeyboard.readLine();

if(linie.contains("STOP")){

flag=true;

String[] tmp=linie.split("STOP");

linie=tmp[0];

if(!linie.equals("")) {

if (!stringList.contains(linie)) {

stringList2.add(linie);

}

stringList.add(linie);

}

}

else{

if(!stringList.contains(linie)) {

stringList2.add(linie);

}

stringList.add(linie);

}

}

System.out.println("Lista 1: "+stringList.toString());

System.out.println("Lista 2: "+stringList2.toString());

}catch (IOException e){

System.out.println("Something went wrong!");

}

}

}

Problema 3

import java.util.ArrayList;

abstract class TIP{

public abstract String getTip();

public abstract String toString();

}

class Intreg extends TIP{

private int valoare;

public Intreg(int valoare){

this.valoare=valoare;

}

public String getTip(){

return "TIP: Intreg";

}

public String toString(){

return this.valoare+"";

}

public boolean equals(Object o) {

if(o instanceof Intreg){

return this.valoare==((Intreg)o).valoare;

}

else

return false;

}

}

class Sir extends TIP{

private String continut;

public Sir(String continut){

this.continut=continut;

}

public String getTip() {

return "TIP: Sir";

}

public String toString() {

return continut;

}

public boolean equals(Object o) {

if(o instanceof Sir){

return this.continut.equals(((Sir)o).continut);

}

else

return false;

}

}

class Colectie extends TIP{

private ArrayList<TIP> colectie=new ArrayList<TIP>(5);

public String getTip() {

return "TIP: Colectie";

}

public String toString() {

return colectie+"";

}

public boolean equals(Object o){

boolean isEqual=true;

if(o instanceof Colectie){

if(((Colectie)o).colectie.size()!=this.colectie.size()) {

isEqual = false;

}

else{

for(int i=0;i<colectie.size();i++){

if(!colectie.get(i).equals(((Colectie)o).colectie.get(i))) {

isEqual = false;

break;

}

}

}

}

else

isEqual=false;

return isEqual;

}

public void add(TIP[] tip){

for(int i=0;i<tip.length;i++){

if(tip[i]==null){

System.out.println("Nu se poate adauga elementul");

break;

}

colectie.add(i,tip[i]);

}

}

public void add(TIP tip){

if(tip==null)

System.out.println("Nu se poate adauga elementul");

else

colectie.add(tip);

}

}

public class Main {

public static void main(String[] args) {

TIP c1=new Colectie();

((Colectie)c1).add(new Intreg(7));

((Colectie)c1).add(new Intreg(4));

((Colectie)c1).add(new Sir("Eu"));

((Colectie)c1).add(new Intreg(12));

System.out.println("Colectia 1: "+c1);

TIP c2=new Colectie();

((Colectie)c2).add(new Intreg(7));

((Colectie)c2).add(new Intreg(4));

((Colectie)c2).add(new Sir("Eu"));

((Colectie)c2).add(new Intreg(12));

System.out.println("Colectia 2: "+c2);

System.out.println("Colectiile sunt egale: "+c1.equals(c2));

((Colectie)c1).add(c2);

System.out.println("Colectia mare "+c1);

}

}