|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Temas - SFRJ
1
« en: Miércoles 30 de Marzo de 2011, 14:02 »
Tengo un problema con la opcion sortBy (Ordenar alfabeticamente) en un componente llamado dataTable de que se utiliza en el framework PRIMEFACES Aqui podeis ver el componente que quiero utilizar en mi pagina JSF http://www.primefaces.org/showcase/ui/datatableSorting.jsf Lo que ocurre es que la opcion sortBy es la unica que no me funciona.Todas las demas que utilizo me funcionan(paginator,filterBy) pondre el codigo asi le podeis echar un vistazo tambien. Este es el codigo de la pagina de composicion JSF <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:t="http://myfaces.apache.org/tomahawk" xmlns:p="http://primefaces.prime.com.tr/ui"> <ui:composition template="WEB-INF/templates/BasicTemplate.xhtml"> <ui:define name="resultsForm"> <h:form enctype="multipart/form-data"> <p:dataTable var="garbage" value="#{resultsController.allGarbage}" dynamic="true" paginator="true" paginatorPosition="bottom" rows="10" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15"> <p:column sortBy="#{garbage.filename}" parser="string" filterBy="#{garbage.filename}" filterMatchMode="startsWith"> <f:facet name="header"> <h:outputText value="Filename" /> </f:facet> <h:outputText value="#{garbage.filename}" /> </p:column> <p:column filterBy="#{garbage.description}" filterMatchMode="contains"> <f:facet name="header"> <h:outputText value="Description" /> </f:facet> <h:outputText value="#{garbage.description}" /> </p:column> <p:column sortBy="#{garbage.uploadDate}" parser="string"> <f:facet name="header"> <h:outputText value="Upload date" /> </f:facet> <h:outputText value="#{garbage.uploadDate}" /> </p:column> </p:dataTable> </h:form> </ui:define> </ui:composition> </html>
Aqui esta el ManagedBean que interactua con la pagina @ManagedBean @RequestScoped public class ResultsController { @EJB private ISearchEJB searchEJB; private Garbage garbage; public List<Garbage> getAllGarbage() { return searchEJB.findAllGarbage(); } public Garbage getGarbage() { return garbage; } public void setGarbage(Garbage garbage) { this.garbage = garbage; }
Este es el EJB que hace de capa de negocio y proporciona acceso a la base de datos @Stateless(name = "ejbs/SearchEJB") public class SearchEJB implements ISearchEJB { @PersistenceContext private EntityManager em; public List<Garbage> findAllGarbage() { Query query = em.createNamedQuery("findAllGarbage"); List<Garbage> gList = new ArrayList<Garbage>(); for (Object o : query.getResultList()) { Object[] cols = (Object[]) o; Garbage tmpG = new Garbage(); tmpG.setFilename(cols[0].toString()); tmpG.setDescription(cols[1].toString()); tmpG.setUploadDate(cols[2].toString()); gList.add(tmpG); } return gList; } }
Esta es una entidad que utiliza la tecnologia JPA para crear la tabla en la base de datos. Utilizo un comando SQL para devolver solamente aquellos atributos que necesito. @NamedQuery(name = "findAllGarbage", query = "SELECT g.filename, g.description, g.uploadDate FROM Garbage g;") @Entity public class Garbage { @Id @GeneratedValue @Column(nullable = false) private Long id; @Column(nullable = false) private String filename; @Column(nullable = false) private String fileType; @Column(nullable = false) private String uploadDate; @Column(nullable = false) private String destroyDate; @Lob @Column(nullable = false) private byte[] file; @Column(nullable = false) private String description; //Getters and Setters...
Como ya he dicho, todo funciona correctamente, es solamente el ordenar lo que no funciona. A tambien quiero mencionar que en la consola de mi IDE eclipse me sale este mensaje cuando refresco la pagina de resultados i hago click en la flechita the ordenar. SEVERE: line 1:61 no viable alternative at character ';' Las tecnologias que utilizo: -JEE6 -JSF 2.0(capa de presentacion) -servidor glassfish V3.0 -framework primefaces-2.2.1 Les estaria muy agradecidos si me pudieseis echar un cable con este problemilla. Saludos a todos.
2
« en: Jueves 10 de Febrero de 2011, 13:58 »
Me gustaria saber si existe alguna alternativa, en JSF 2.0 para comunicar entre beans. Concretamente, me gustaria saber, como puedo pasar un valor String a la URL desde un managedbean o desde una pagina .xhtml, para poder luego leerlo en la pagina destino. Yo utilizo la siguiente tecninca para pasar valores, cuando mi managed bean es @Stateless, aunque no me gusta mucho, ya que luego tengo que llamar al metodo clear(), para vaciar el pool del FacesContext. Sabe alguien si se puede hacer de otra manera? BEAN1: //Save a value to the context FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("clickedLink", "" + selectedLinkIndex); BEAN2: @PostConstruct//This annotation is needed otherwise the value will be lost public void init() { //Read a value from the context currentCity = FacesContext.getCurrentInstance().getExternalContext() .getRequestMap().get("clickedLink").toString(); //Clearing the resources in the instance map after ussing. FacesContext.getCurrentInstance().getCurrentInstance() .getExternalContext().getRequestMap().clear(); }
3
« en: Miércoles 22 de Septiembre de 2010, 20:29 »
Hola companeros. Hace ya tiempo que programo en Tapestry( http://www.tapestry.apache.org) haciendo applicaciones web en java. Estoy pensando en hacer una pequeno programa en el que el usuario pueda utilizar un textArea para enviar SMS ha un telefono movil desde la applicacion. Nunca antes he hecho nada con SMS, me gustaria que si alguien ha trabajado o a hecho algo con servicios SMS, si podria explicarme un poco cuales son los pasos a seguir para que mi applicacion pueda enviar mensajes a moviles. He de hablar con alguna empresa, o contratar algun servicio? Estoy un poco verde en este tema y me gustaria explorarlo un poco. Les estaria muy agradecidos si pudiesen explicarme un poquillo sobre las opciones que tengo en el mundo del SMS. Saludos.
4
« en: Miércoles 25 de Agosto de 2010, 20:22 »
Hola amigos de seguridad y criptografia. Podria alguien decirme que tipo de ataques de denegacion de servicio(denial of service), pueden ser capaces de resetear el router automaticamente(es esto posible?). He creado un programa en java que hace ataques the tipo UDP y tambien SYN, hasta ahora he conseguido bloquear la conexion hacia mi propio router. Se que la denegacion de servicio, dura tanto como dure el ataque, pero mi pregunta es, si es posible que el router se resetee automaticamente con alguno de estos ataques, o con algun otro de tipo DoS, si es demasiado continuado? Espero que este post pase la censura del foro, simplemente estoy estudiando, no soy ningun cracker ni hacker... Saludos a todos.
5
« en: Sábado 16 de Enero de 2010, 19:13 »
Hola amigos, al fin he creado mi primera aplicacion web en ASP.NET. Me ha costado bastante pero bueno estoy contento. Mi pregunta es que no consigo que aparezca en los buscadores. Leyendo en webmaster tools help de google pone que puede que el diseno pueda influir. La verdad no se cual es el problema, ya que he colocado bastantes meta tags. Al poner el nombre de la pagina directamente en los buscadores no aparece. Mi hosting me obliga a que la pagina de inicio se llame Default.aspx, y entonces al entrar en el constructor yo redirijo a Home.aspx no se si esto puede influir. Os dejo el link si quereis echarle un vistazo a la pagina, espero que os guste. http://www.fos-forum.netUn saludo a todos.
6
« en: Lunes 28 de Septiembre de 2009, 20:02 »
Tengo 3 preguntas alomejor alguien me puede ayudar con alguna:
-Como puedo hacer para quitar el boton de maximizar y el de minimizar de un Form?(Solo quiero dejar el de cerrar) -Como puedo hacer para que mi aplicacion cuando abre un nuevo form Child, este aparezca en la pantalla, pero no ocupe espacio en la barra de tareas de windows. Y si es correcto usar varias Forms en un mismo proyecto, o que alternativas hay si quiero que mi aplicacion cuente con varias ventanas en las que hay componentes? -Como puedo para crear un nuevo Form al hacer click, pero solamente una y no varias Forms.
Saludos a todos
7
« en: Miércoles 23 de Septiembre de 2009, 16:09 »
Hola amigos. Se me ocurrio que alomejor vosotros me podriais echar un cable. Sabria alguien que he de hacer para poder crear un archivo .docx utilizando visual studio 2005, y en el escribir "Hello World?". Estoy un poco verde en el tema de la automatizacion, he empezado a trabajar con C# hace un par de semanas, vengo de Java, y no estoy familiarizado para nada con los namespaces de C#. Solamente una pequena ayudita de como crear un .docx y escribir en el unas palabras me serian muy utiles para arrancarme, ya que llevo un par de dias atascado. Muchos saludos.
8
« en: Lunes 22 de Junio de 2009, 16:11 »
Hola. Porfavor sabe alguien algun link, donde pueda encontrar una lista de acronimos de las teccnologias java, pero solamente java. Algo parecido a lo que hay en esta direccion, http://www.zonagratuita.com/curiosidade ... nica/J.htm pero que sea tan solo sobre java. Muchas gracias, saludos.
9
« en: Jueves 30 de Abril de 2009, 22:48 »
Alguien de ustedes a utilizado algun api que le permita trabajar con opciones tipo win32? Me gustaria empezar a explorar las posibilidades del JNI de java, pero no se pordonde empezar, y que plugins para mi eclipse descargar. Para empezar me gustaria poder abrir el cd, cambiar el contraste de la pantalla del pc... nose alguna de estas cosillas, se que esto es posible con el JNI de java pero necesito un cable para saber que apis necesito exactamente. Algun consejo?
Saludos
10
« en: Viernes 10 de Abril de 2009, 07:37 »
Porfavor alguien me podria indicar por donde he de buscar, si quiero poder crear arcivos .odt en Java y editarlos.Estoy algo perdido Es esto posible? Saludos.
11
« en: Domingo 15 de Marzo de 2009, 13:12 »
Buenas que ai?
Mirad tenia una pequena preguntilla, y esque el viernes tengu un examen te la asignatura XML, en el cual vamos a tener que parsear un documento .xml utilizando java. Se nos permite utilizar eclipse y el plugin dom4j.Bueno hasta aqui no hay ningun problema, llevo practicando dos dias y consigo parsear los documentos y imprimir los datos sin problemas en la consola de eclipse pero, tardo bastante(tengo que conseguir hacerlo en 45 mins mas o menos un documento .xml no muy complejo lo consigo en 120mins). Bueno pues mi pregunta es que si sabe alguien si es posible, crear un parseador universal?Haber si me explico, que sepa detectar los nombres de los elementos, los atributos.... Si existe es muy dificil de crear?A hecho alguien algo parecido alguna vez y me podria guiar un poquillo como se podria hacer un pequeno programa de este tipo?(Sin GUI)
Saludos
12
« en: Lunes 2 de Marzo de 2009, 12:13 »
Mi pregunta es sobre el bug race condition. Tengo que hacer un pequeno trabajito para la uni explicando lo que es RACE CONDITION. Yo lo unico que entiendo es que es un problema, varios procesos intentan acceder a un mismo recurso al mismo tiempo. La verdad no tengo muy claro, me podria porfavor alguien explicar un poquito aclarar esto como va. He leido sobre bancos que tuvieron este problema, pero no consigo entenderlo para poder explicarlo, y la verdad parece un tema bastante interesante. Si alguien sabe sobre el tema estaria agradecido.
La primera vez que oi sobre esto fue hace un ano estudiando hilos en java, pero nunca vi un ejemplo real. Saludos.
13
« en: Viernes 20 de Febrero de 2009, 03:09 »
Hola amigos. Estaba surfeando por la red para buscar algo de material para empezar a estudiar sobre tapestry 5, y se me ocurrio, porque no preguntar en el foro  Estoy empezando con tapestry, y rapido me he dado cuenta de que aunque hay codigo en java, el principio en el que funcionan las cosas me resulta un poco extrano, pero interesanta.Alguien de ustedes usa tapestry 5? Me podrian recomendar algun libro o tutorial sencillo para principiantes?? En la pagina de apache, encuentro pastante material, incluso hay algun que otro video tutorial, pero lo qu busco concretamente son pequenos ejercicios de practica en forma de tutorial o algo asi no se si me entienden. Estoy leyendo el libro de Alexander Kolesnikov tapestry 5, pero me resulta algo complicado de entender. Concretamente ahora estoy atascado, en como enviar informacion entre pages o POJOS. Saludos
14
« en: Viernes 6 de Febrero de 2009, 14:19 »
Bueno como el titulo del tema lo dice puede parecer que la pregunta es algo tonta para ser mi segundo ano ya estudiando y aprendiendo java pero he de hacerla porque no consigo encontrar una explicacion completa en el google. La pregunta es si podrian ustedes descrivir con sus palabras exactamente lo que significa: public static void main(String args[]) bueno pues mi problema es el siguiente y esque me atasco en lo de String [] args que esque no lo acabo de entender para que sirve porfavor aclarenme mi duda y corrijanme si me equivoco.
public --> modificador de acceso que indica que el metodo es accesible desde cualquier parte del codigo. static --> palabra reservada al lenguaje java que facilita que los metodos o varijables que la utilicen, no tengan necesidad de crear un objeto de clase para poder ser llamados. void --> indica que el metodo devuelve alla donde se llamo un objeto de tipo void, que simboliza que nos se ha devuelto nada. main-->nombre del metodo, su identificador, la maquina virtual de java es lo primero que busca para poder interpretar un programa. (String [] args) -->son los parametros del metodo , en ellos se indica que este metodo necesita un array de tipo String al que se le da el nombre args. He aqui mi gran dilema, y esque no entiendo para que es ese String[] args y que se hace con el profavor ayuda.
Porfavor si alguien que supiese exactamente la definicion de cada una da las partes de este metodo fuese tan amable de aclarmelo. Un saludo a todos.
15
« en: Sábado 31 de Enero de 2009, 12:06 »
Buenas a todos. Yo otra vez. Miren esque estoy intentando aprender algo sobre los Sockets y aunque leo bastante literatura, este tema lo tengo bastante atascado, alomejor me podrian ustedes echar una manita. He intentado crear dos (pequenas aplicaciones, una cliente y otra servidor) y lo que me gustaria es poder hacer que comuniquen entre si mandandose texto simplemente.La verdad no parece complicado, pero no se en que fallo, solo consigo que me salgan Exceptions por todos lados. No se si esque estructuro mal el codigo, o que es lo que hago mal. Les mando los dos programas en los adjuntos(Son muy pequenos). Me gustaria, si alguien me pudiese dar instrucciones paso a paso de lo que he de hacer para poder lograr que me funcione este pequeno experimento. Un saludo.
16
« en: Viernes 30 de Enero de 2009, 21:04 »
Hola amigos mirad tengo solo una preguntilla, y esque me gustaria saber como vosotros los que os considerais buenos programadores en java, como haceis cuando trabajais con GUI. Entendereis lo que quiero decir cuando veais los dos programillas que he hecho: -En uno utilizo el Visual Editor de Eclipse, que me proporciona una manera muy rapida de hacer mi GUI.(Pero no se si es correcto, un companero de la uni me ha dicho que esto genera mucho codigo basura y que lo que he de hacer es hacer el GUI manualmente.) -El otro programa es lo mismo, simplemente un panel con un boton y un JtextArea solo que esta vez no me he ayudado para nada de Visual editor, sino que lo he hecho manualmente. Me gustaria solo que le echaseis un vistacillo rapido y que me digais que el lo que opinais. Tambien ya que estamos queria hacer otra preguntilla referente al jFrame. No se si en vuestros ordenadores pasara, pero en el mio cuando en el programa en el que yo he hecho el GUI manualmente, cuando ejecuto, no se ven los elementos dentro del jFrame, tengo que minimizar i maximizar y entonces se ven.(No se algo mu raro). Con el programa echo en visual editor no tengo este fallo. Espero buestros consejos, para poder mejorar mi tecnica  Saludos.
17
« en: Domingo 25 de Enero de 2009, 20:39 »
Hola amigos tengo un pequeno problemilla con un juego de cruz y raya que estoy haciendo en java, y creo que se podria solucionar con un poquito de inteligencia artificial  la verdad esque no tengo ni idea sobre inteligencia artificial  pero me gustaria saber como se podria solucionar mi problema. Ahi os mando el link a el post donde he enviado el codigo fuente en el foro de Java. http://foros.solocodigo.com/viewtopic.php?f=32&t=38192Un saludo a todos y gracias
18
« en: Domingo 25 de Enero de 2009, 20:31 »
Hola amigos me estado rompiendo la cabeza ya unos cuantos dias y no se que hacer. Estoy haciendo un juego de cruz y raya pero solo he podido hacer para jugar a 2 jugadores, no consigo hacer el algoritmo para poder jugar contra el CPU. Si alguien sabe como se hace estaria muy agradecido de que me ayudase a terminar el programa.Yo diria que el programilla esta ya terminado al 80% solo me falta entender como poder hacer alguna especie de memorilla artificial(he visto algun aplet por internet pero que no es para nada inteligente, el ordenador nunca gana), y que piense un poco. Si os interesa ayudarme y dais con la solucion estaria muy agradecido. Ahi en el adjunto os mando el codigo fuente de lo que he hecho asta ahora, de momento solo se puede jugar a 2 jugadores  Un saludo a todos
19
« en: Jueves 1 de Enero de 2009, 10:30 »
Buenas a todos amigos, espero que empeceis todos bien el ano. Mi primera pregunta este 2009 es sobre le paquete .net del API de Java. Hasta ahora solo he aprendido a serializar i deserializar archivos, pero me gustaria aprender como puedo trabajar un poco con sokets. En casa tengo dos ordenadores conektados direktamente simplemente con un cable de ethernet, y me gustaria saber como crear dos programillas: uno cliente y uno servidor, en el que uno de los ordenadores envie un teksto a a un JTextArea de la aplicacion en el otro lado de la conexion. Yo creo que no es muy dificil pero nunca he hecho algo parecido. Si alguien me pudiese guiar un poquillo, por donde empezar, estaria muy agradecido. Un saludo a todos. FELIZ 2009
20
« en: Viernes 28 de Noviembre de 2008, 00:12 »
Hola amigos de seguridad y criptografia, les envio este mail para preguntar una informacion. Me podria explicar algien que son las Senales Syn y Ack?Como se envian o se reciben? Estamos ahora con este tema en la facultad pero la verdad esque estoy unpoco perdido con la literatura no me entero muy bien de lo que es cada cosa. Un saludo a todos.
21
« en: Sábado 22 de Noviembre de 2008, 23:46 »
Hola amigos estoy empezando a trabajar con GUI es muy interesante, pero me gustaria saber como se podria cambiar el icono de mi archivo JAR ejecutable? Haciendo click con el boton derecho no funciona.Utilizo eclipse, y en el proceso de crear el JAR no he visto ninguna opcion que me indique como cambiar el icono. Un saludo.
22
« en: Domingo 16 de Noviembre de 2008, 18:48 »
Amigos necesito la ayuda de alguien que sepa trabajar con hilos(Threads). Estoy un poco desesperado porque tengo un examen el viernes y todavia no he conseguido aprender como se sincronizan los hilos en java. Si alguien me pudiese echar un cable.Me gustaria saber si tienen ustedes algun ejemplo muy simple en el que se vea como la sincronizacion de metodos funciona.
Un saludo.
23
« en: Sábado 18 de Octubre de 2008, 08:09 »
Acabo de empezar a estudiar los Threads y ya tengo mogollon de dudas. Alomejor me podeis aclarar algunas... He echo una pequena prueba en la que quiero detener un loop un tiempo para ejecutar otra tarea, y cuando esta tarea termine que el loop continue.Parece mas dificil de lo que pensaba  No conozco bien las clases para trabajar con Threads no se si utilizo las correctas. Mas o menos se lo que hace el meto wait() pero el metodo notify() no entiendo la explicacion dada en el API. Esto se lo que Estoy intentando hacer haber que os parece: package paket; public class MainTread { public synchronized void method1() { Irq irq = new Irq(); for (int i = 0; i < 10; i++) { try { this.wait(500); System.out.println("[]"); irq.irqSignal(); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) { MainTread mt = new MainTread(); mt.method1(); } //////////////////////////////////////////////// package paket; import java.util.TimerTask; public class Irq extends Thread { private Thread th = new Thread(); public synchronized void irqSignal() { th.getPriority(); try { this.wait(3000); //AKI QUIERO REALIZAR ALGO QUE TARDE UN TIEMPO. //OSEA QUE HAGA ALGO MIENTRAS ESTA PAUSADO EL TREAD DE LA OTRA CLASE int i = 0; while(i < 300) { i++; System.out.print(i); } } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("IRQ"); } } }
EL output es: [] 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300IRQ [] 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300IRQ [] 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300IRQ 24252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300IRQ []........................
24
« en: Viernes 17 de Octubre de 2008, 20:29 »
Sabe alguien donde podria encontrar una referencia en la que poder ver cual es el valor Hexadecimal de cada caracter de unicode?
25
« en: Martes 14 de Octubre de 2008, 22:32 »
Hola a todos colegas. Escribo este post, porque me estoy preparando para mi primer examen de estructura de datos.
Tengo como objetivo crear una estructura de datos estatica y que utilice una tecnica de acceso a los elementos directo(Osea que no sea ni LIFO ni FIFO, sino que cuando yo quiera sacar un elemento pueda sacar el que me de la gana), que organice de menor a mayor los objetos que en ella se introducen, para que luego el denominado proceso binarySearch sea posible. Les voy a mandar una clase que he recibido de mi Profesora de Belgrado en la cual ella implementa esta estructura, tengo grandes problemas entendiendo el metodo add(). Me gustaria saber que pensais sobre esta clase y tambien si existe alguna forma mas simple de hacer el metodo add() de alguna manera mas rapida que me organice inmediatamente los balores en el array con algun metodo de las libraries, o algo por el estilo...
Bueno yo ai os mando este pequeno trozo de codigo haber que pensais: //CODIGO
public class SortedArrayList implements ISortedList { private Comparable[] array; private int counter; public SortedArrayList(int size) { if ( size < 0 ) { System.err.println("Kapacitet listemorabiti pozitivan broj"); size = 20; } array = new Comparable[size]; counter = 0; } @Override public void add(Comparable c) { if ( isFull() ) { System.err.println("Lista je vec puna, operacija se ne moze izvrsiti"); return; } if ( isEmpty() ) {//Ako je niz prazan ulazni argument dodijeljujese prvoj poziciji array[counter++] = c; return;//kraj! } int index = 0; //Vrijednost manje od 0 dobijemo od metoda compareTo(Comparable c), kada je array[index] < od zadat argument. //Dobicemo vrijednost 1 od metoda compareTo, kada zadat argument bude veci nego onaj vrijednost s kojim smo uporedili //Jel pozicija array[index] manja do vrijednost ulaznog argumenta? Ako da while ( index < counter && array[index].compareTo(c) < 0) { index++;//Ako da onda uvecamo index jer treba da bude sortirano od manje do vece } for(int i = counter; i > index; i--) { array = array[i-1]; } array[index] = c; counter++; } @Override public int exists(Comparable c) { int lowerBound = 0; int upperBound = counter - 1; while ( lowerBound <= upperBound ) { int currentIndex = (lowerBound + upperBound)/2; if ( array[currentIndex].compareTo(c) == 0 ) return currentIndex; if ( array[currentIndex].compareTo(c) < 0 ) lowerBound = currentIndex + 1; else //array[currentIndex].compareTo(c) > 0 upperBound = currentIndex - 1; } return -1; }
@Override public boolean isEmpty() { return counter == 0; }
@Override public boolean isFull() { return counter == array.length; }
@Override public void print() { System.out.println("Prikaz elemenate niza:"); for (int i = 0; i < counter; i++) { System.out.println( array ); } }
@Override public Comparable remove(Comparable c) { if ( isEmpty() ) { System.err.println("Lista je prazna; operacija se ne moze izvrsiti"); return null; } int toRemoveIndex = exists(c); Comparable temp = array[toRemoveIndex]; for (int i = toRemoveIndex; i < counter - 1 ; i++) { array = array[i+1]; } counter--; return temp; }
}
|
|
|