Dudas de novato... JAVA

Tengo que hacer un programa que genere un array de n elementos, y si es necesario, aumentar la capacidad, para lueo hacer un método que recorra el array y, en el caso en que haya datos repetidos, los elimine y solo deje uno de ellos...
Por ejemplo
[1,2,3,1,2,3,4]=[1,2,3,4].
Entonces, te explico mi "planteamiento", hacer 3 clases: CrearVector, DuplicarVector y EliminarRepetidos.
CrearVector:
public static class CrearVector{
         Scanner stdin= new Scanner(System.in);
                  int capacidad;
                  System.out.println("¿Qué tamaño quiere que tenga el array?");
                   capacidad=stdin.nextInt();
                  String [] vector;
                  vector = new String[capacidad];
}
DuplicarVector:
public static class DuplicarVector{
         boolean ocupado;
         ocupado=false;
          int i=0;
//Comprueba si el vector está ocupado en su totalidad.
         for(i=0;i<vector.length; i++){
              if(vector== null){
              ocupado = true;
              }
         }
 //si falta espacio lo duplica.
          if(ocupado==true){
              int n = vector.length;
              n=2*n;
              String[]vectorAmpliado = new String[n];
              for(i=0; i<(n/2); i++){
                      vectorAmpliado=vector;
              }
          }
}
Y el eliminar repetidos no se como hacerlo, al igual que poner los getters y los setters; ya que una vez que los tenga si se llamar a los métodos... Pero hasta entonces...
También me gustaría saber como comprobar que el array no está vacío con enteros y no con string, lo he hecho así porque el string si se puede rellenar a null, mientras que el int no me deja.
Respuesta
1
/**En java hay 9 tipos de datos, 8 primitivos y uno por referencia en este caso
* por referencia serian todos los objetos y su valor por default sin inicializar es null;
* Para los datos primitivos el valor que toman por default cuando no inicializas es:
* int=0,short=0,byte=0,char=caracter unicode extraño,float=0.0,boolean=false,long=0,double =0.0
* por lotanto una variable priminitiva no se puede inicializar a null porque no es un variable de referencia de objeto.
*/
Nota: Un arreglo en general es un objeto y en cada posición del arreglo puedes tener tipos primitivos y de referencia los cuales son todos los objetos. Entonces puedes tener arreglos de objetos y de primitivos y si quieres inicializar un arreglo entonces inicializalo con null por que arreglos de objetos y primitivos en java son objetos.
Respecto a tus ultimas preguntas.
Variables miembro se declaran y se inicializan.
int [] vector;  //declaracion
vector=new int[1];//inicializacion
//Un vector es especial por que se debe inicializar con un tamaño, esto quieres decir que una vez que lo inicializas este ya no podrá ser cambiado.
un arreglo nunca puede estar vacio si ya ha sido inicializado con un tamaño. si este es un arreglo de n Strings entonces cada posicion en el arreglo tiene null y no esta vacio, sis es un arreglo de enteros, cada posicion en el arreglo tiene 0 y tampoco esta vacio, Solo puedes decir que el arreglo esta vacio cuando no ha sido inicializado o no tiene referencia, ejemplo: int [] arreglo;
Te paso unos métodos para eliminar repetidos y duplicar el arreglo la cual ya te da la pauta para manejarlos como lo desees.
Le pasas el arreglo original con repetidos y te devuelve un nuevo arreglo.
public int [] eliminarRepetidos(int [] arreglo){
int [] arregloDepurado=null;
List lista=new ArrayList();
for (int x=0 ; x < arreglo.length ; x++ )
{
int valor=arreglo[x];
Integer valorObjeto= new Integer(valor);
if(!lista.contains(valorObjeto)){
lista.add(valorObjeto);
}
}
arregloDepurado=new int[lista.size()];
for (int y=0 ;y< lista.size();y++ )
{
Integer valorObjeto=(Integer)lista.get(y);//sacamos un objeto Integer de la lista de repetidos
arregloDepurado[y]=valorObjeto.intValue();
}
return arregloDepurado;
}
public int [] duplicarArreglo(int [] arreglo){
int [] arregloDuplicado=new int[arreglo.length*2];
int y=0;//controla las posiciones del arreglo duplicado
for (int j=0 ; j < 2 ; j++ ) {
for (int x=0 ; x < arreglo.length ; x++ )
{
int valor=arreglo[x];
arregloDuplicado[y]=valor;
y++;
}
}
return arregloDuplicado;
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas