[{"data":1,"prerenderedAt":1444},["ShallowReactive",2],{"navigation_docs":3,"-arreglos-comparator":412,"-arreglos-comparator-surround":1439},[4,18,43,118,160,200,231,320,346],{"title":5,"path":6,"stem":7,"children":8,"icon":17},"Evaluación","\u002Fintroduction","1.introduction\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"icon":11},"Método de Evaluación","i-iconamoon-cheque-bold",{"title":13,"path":14,"stem":15,"icon":16},"Plataforma de Aprendizaje","\u002Fintroduction\u002Fplataforma","1.introduction\u002F2.plataforma","i-lucide-book-marked","i-lucide-house",{"title":19,"icon":20,"path":21,"stem":22,"children":23,"page":42},"Entorno de desarrollo","i-codicon-edit-code","\u002Fide","2.ide",[24,28,33,37],{"title":25,"path":26,"stem":27,"icon":20},"¿Qué es un IDE?","\u002Fide\u002Fentorno","2.ide\u002F1.entorno",{"title":29,"path":30,"stem":31,"icon":32},"Estructura de un Proyecto","\u002Fide\u002Festructura","2.ide\u002F2.estructura","i-clarity-tree-view-line",{"title":34,"path":35,"stem":36,"icon":20},"La compilación en un IDE","\u002Fide\u002Fcompilacion","2.ide\u002F3.compilacion",{"title":38,"path":39,"stem":40,"icon":41},"Depuración de Código","\u002Fide\u002Fdepurar","2.ide\u002F4.depurar","i-lucide-bug",false,{"title":44,"icon":45,"path":46,"stem":47,"children":48,"page":42},"Clases y Objetos","i-catppuccin-java-class","\u002Fclases-objetos","3.clases-objetos",[49,53,57,62,66,70,74,78,83,88,92,96,101,106,110,114],{"title":50,"path":51,"stem":52},"Repaso previo a Clases y Objetos","\u002Fclases-objetos\u002Fpreview","3.clases-objetos\u002F00.preview",{"title":54,"path":55,"stem":56,"icon":45},"¿Qué es la Programación Orientada a Objetos (POO)?","\u002Fclases-objetos\u002Fpoo","3.clases-objetos\u002F01.poo",{"title":58,"path":59,"stem":60,"icon":61},"Diagramas de Clases y Objetos","\u002Fclases-objetos\u002Fdiagramas","3.clases-objetos\u002F02.diagramas","i-devicon-uml",{"title":63,"path":64,"stem":65,"icon":45},"Las Clases","\u002Fclases-objetos\u002Fclases","3.clases-objetos\u002F03.clases",{"title":67,"path":68,"stem":69,"icon":45},"Ámbito y Visibilidad","\u002Fclases-objetos\u002Fambito","3.clases-objetos\u002F04.ambito",{"title":71,"path":72,"stem":73,"icon":45},"Declaración e Instanciación de Objetos","\u002Fclases-objetos\u002Fobjetos","3.clases-objetos\u002F05.objetos",{"title":75,"path":76,"stem":77,"icon":45},"Clases Predefinidas en Java","\u002Fclases-objetos\u002Fpredefinidas","3.clases-objetos\u002F06.predefinidas",{"title":79,"path":80,"stem":81,"icon":82},"Paquetes en Java","\u002Fclases-objetos\u002Fpaquetes","3.clases-objetos\u002F07.paquetes","i-material-icon-theme-folder-java-open",{"title":84,"path":85,"stem":86,"icon":87},"Las Excepciones","\u002Fclases-objetos\u002Fexcepciones","3.clases-objetos\u002F08.excepciones","i-catppuccin-java-exception",{"title":89,"path":90,"stem":91,"icon":45},"La clase JOptionPane","\u002Fclases-objetos\u002Fjoptionpane","3.clases-objetos\u002F09.joptionpane",{"title":93,"path":94,"stem":95,"icon":45},"Constructores y Accesores","\u002Fclases-objetos\u002Fconstructores","3.clases-objetos\u002F10.constructores",{"title":97,"path":98,"stem":99,"icon":100},"Tipos Enumerados (Enums)","\u002Fclases-objetos\u002Fenumerados","3.clases-objetos\u002F11.enumerados","i-catppuccin-java-enum",{"title":102,"path":103,"stem":104,"icon":105},"Modificadores de acceso static y final","\u002Fclases-objetos\u002Fmodificadores","3.clases-objetos\u002F12.modificadores","i-mdi-chart-box",{"title":107,"path":108,"stem":109,"icon":105},"El casting en Java","\u002Fclases-objetos\u002Fcasting","3.clases-objetos\u002F13.casting",{"title":111,"path":112,"stem":113},"Las Expresiones Regulares","\u002Fclases-objetos\u002Fexpresiones-regulares","3.clases-objetos\u002F14.expresiones-regulares",{"title":115,"path":116,"stem":117,"icon":105},"Clases Genéricas en Java","\u002Fclases-objetos\u002Fclases-genericas","3.clases-objetos\u002F15.clases-genericas",{"title":119,"icon":120,"path":121,"stem":122,"children":123,"page":42},"Funciones (Métodos)","i-material-symbols-function","\u002Fmetodos","4.metodos",[124,128,132,136,140,144,148,152,156],{"title":125,"path":126,"stem":127},"Funciones Genéricas","\u002Fmetodos\u002Ffuncion-generica","4.metodos\u002F01.funcion-generica",{"title":129,"path":130,"stem":131},"Métodos de Instancia y de Clase","\u002Fmetodos\u002Finstancia-clase","4.metodos\u002F02.instancia-clase",{"title":133,"path":134,"stem":135},"Sobrecarga de Funciones","\u002Fmetodos\u002Fsobrecarga","4.metodos\u002F03.sobrecarga",{"title":137,"path":138,"stem":139},"Alcance de Variables y Métodos","\u002Fmetodos\u002Falcance","4.metodos\u002F04.alcance",{"title":141,"path":142,"stem":143},"Recursividad","\u002Fmetodos\u002Frecursividad","4.metodos\u002F05.recursividad",{"title":145,"path":146,"stem":147},"Puntero this","\u002Fmetodos\u002Fthis","4.metodos\u002F06.this",{"title":149,"path":150,"stem":151},"Los argumentos variables (varargs)","\u002Fmetodos\u002Fvarargs","4.metodos\u002F07.varargs",{"title":153,"path":154,"stem":155},"La clase Arrays","\u002Fmetodos\u002Farrays","4.metodos\u002F08.arrays",{"title":157,"path":158,"stem":159},"Predicados Simples y Compuestos en Java","\u002Fmetodos\u002Fpredicados","4.metodos\u002F09.predicados",{"title":161,"path":162,"stem":163,"children":164,"icon":199},"Herencia","\u002Fherencia","5.herencia\u002F01.index",[165,167,171,175,179,183,187,191,195],{"title":166,"path":162,"stem":163},"¿Qué es la herencia?",{"title":168,"path":169,"stem":170},"Sobreescritura de métodos y uso de `super`","\u002Fherencia\u002Fsobeescritura","5.herencia\u002F02.sobeescritura",{"title":172,"path":173,"stem":174},"Tipos de herencia","\u002Fherencia\u002Ftipos-herencia","5.herencia\u002F03.tipos-herencia",{"title":176,"path":177,"stem":178},"La clase Object en Java","\u002Fherencia\u002Fobject","5.herencia\u002F04.object",{"title":180,"path":181,"stem":182},"Polimorfismo","\u002Fherencia\u002Fpolimorfismo","5.herencia\u002F05.polimorfismo",{"title":184,"path":185,"stem":186},"Clases y Funciones Abstractas","\u002Fherencia\u002Fabstract","5.herencia\u002F06.abstract",{"title":188,"path":189,"stem":190},"Interfaces","\u002Fherencia\u002Finterfaces","5.herencia\u002F07.interfaces",{"title":192,"path":193,"stem":194},"Funciones e Interfaces","\u002Fherencia\u002Ffunciones-interfaces","5.herencia\u002F08.funciones-interfaces",{"title":196,"path":197,"stem":198},"Interfaces y Funciones Lambda","\u002Fherencia\u002Flambda-interface","5.herencia\u002F09.lambda-interface","i-material-symbols-heritage",{"title":201,"path":202,"stem":203,"children":204,"icon":199},"Arreglos","\u002Farreglos","6.arreglos\u002F01.index",[205,207,211,215,219,223,227],{"title":206,"path":202,"stem":203},"Los arreglos en Java",{"title":208,"path":209,"stem":210},"Los arreglos","\u002Farreglos\u002Farray","6.arreglos\u002F02.array",{"title":212,"path":213,"stem":214},"Matrices","\u002Farreglos\u002Fmatrices","6.arreglos\u002F03.matrices",{"title":216,"path":217,"stem":218},"Comparadores","\u002Farreglos\u002Fcomparator","6.arreglos\u002F04.comparator",{"title":220,"path":221,"stem":222},"Arreglos dinámicos: ArrayList","\u002Farreglos\u002Farraylist","6.arreglos\u002F05.arraylist",{"title":224,"path":225,"stem":226},"Arreglos Relacionales: HashMap","\u002Farreglos\u002Fhashmap","6.arreglos\u002F06.hashmap",{"title":228,"path":229,"stem":230},"La clase Stream en Java","\u002Farreglos\u002Fstream","6.arreglos\u002F07.stream",{"title":232,"icon":199,"path":233,"stem":234,"children":235,"page":42},"Archivos e Interfaz de Usuario","\u002Farchivos-ui","7.archivos-ui",[236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316],{"title":237,"path":238,"stem":239},"El paquete Swing","\u002Farchivos-ui\u002Fswing","7.archivos-ui\u002F01.swing",{"title":241,"path":242,"stem":243},"La clase JFrame y el JPanel","\u002Farchivos-ui\u002Fjpanel","7.archivos-ui\u002F02.jpanel",{"title":245,"path":246,"stem":247},"Los Layouts en Swing","\u002Farchivos-ui\u002Flayout","7.archivos-ui\u002F03.layout",{"title":249,"path":250,"stem":251},"Iniciando con Swing","\u002Farchivos-ui\u002Finiciando","7.archivos-ui\u002F04.iniciando",{"title":253,"path":254,"stem":255},"Las clases Color y Font en Swing","\u002Farchivos-ui\u002Fcolor-font","7.archivos-ui\u002F05.color-font",{"title":257,"path":258,"stem":259},"Etiquetas en Swing","\u002Farchivos-ui\u002Fetiquetas","7.archivos-ui\u002F06.etiquetas",{"title":261,"path":262,"stem":263},"Personalizando la apariencia de los componentes en Swing","\u002Farchivos-ui\u002Fpersonalizando","7.archivos-ui\u002F07.personalizando",{"title":265,"path":266,"stem":267},"Sobrescribiendo el método drawComponent() en Swing","\u002Farchivos-ui\u002Fdraw","7.archivos-ui\u002F08.draw",{"title":269,"path":270,"stem":271},"Manejando eventos en Swing","\u002Farchivos-ui\u002Feventos","7.archivos-ui\u002F09.eventos",{"title":273,"path":274,"stem":275},"Personalización de Componentes mediante la Extensión de Clases en Swing","\u002Farchivos-ui\u002Fextends-component","7.archivos-ui\u002F10.extends-component",{"title":277,"path":278,"stem":279},"Gradientes","\u002Farchivos-ui\u002Fgradientes","7.archivos-ui\u002F11.gradientes",{"title":281,"path":282,"stem":283},"Botones en Swing","\u002Farchivos-ui\u002Fbotones","7.archivos-ui\u002F12.botones",{"title":285,"path":286,"stem":287},"Los delegadores en Swing","\u002Farchivos-ui\u002Fdelegadores","7.archivos-ui\u002F13.delegadores",{"title":289,"path":290,"stem":291},"UI para nuestro RPG: Parte 1","\u002Farchivos-ui\u002Frpg-ui-1","7.archivos-ui\u002F14.rpg-ui-1",{"title":293,"path":294,"stem":295},"UI para nuestro RPG: Parte 2","\u002Farchivos-ui\u002Frpg-ui-2","7.archivos-ui\u002F15.rpg-ui-2",{"title":297,"path":298,"stem":299},"Los Streams Entrada y Salida","\u002Farchivos-ui\u002Fstreams","7.archivos-ui\u002F16.streams",{"title":301,"path":302,"stem":303},"Archivo tipo Objeto","\u002Farchivos-ui\u002Farchivo-objeto","7.archivos-ui\u002F17.archivo-objeto",{"title":305,"path":306,"stem":307},"UI para nuestro RPG: Parte 3","\u002Farchivos-ui\u002Frpg-ui-3","7.archivos-ui\u002F18.rpg-ui-3",{"title":309,"path":310,"stem":311},"UI para nuestro RPG: Parte 4","\u002Farchivos-ui\u002Frpg-ui-4","7.archivos-ui\u002F19.rpg-ui-4",{"title":313,"path":314,"stem":315},"UI para nuestro RPG: Parte 5","\u002Farchivos-ui\u002Frpg-ui-5","7.archivos-ui\u002F20.rpg-ui-5",{"title":317,"path":318,"stem":319},"UI para nuestro RPG: Parte 6","\u002Farchivos-ui\u002Frpg-ui-6","7.archivos-ui\u002F21.rpg-ui-6",{"title":321,"icon":322,"path":323,"stem":324,"children":325,"page":42},"Ejemplos","i-check-circle","\u002Fejemplos","8.ejemplos",[326,330,334,338,342],{"title":327,"path":328,"stem":329,"icon":105},"Ejemplo 1: Validando entradas con JOptionPane","\u002Fejemplos\u002Fejemplo-01","8.ejemplos\u002F01.ejemplo-01",{"title":331,"path":332,"stem":333},"Ejemplo 02: Uso de clases genéricas en Java","\u002Fejemplos\u002Fejemplo-02","8.ejemplos\u002F02.ejemplo-02",{"title":335,"path":336,"stem":337},"Ejemplo 03: Uso de Enum, Excepciones en Java","\u002Fejemplos\u002Fejemplo-03","8.ejemplos\u002F03.ejemplo-03",{"title":339,"path":340,"stem":341},"Ejemplo 4: Clase con funciones genéricas de validación","\u002Fejemplos\u002Fejemplo-04","8.ejemplos\u002F04.ejemplo-04",{"title":343,"path":344,"stem":345},"Ejemplo 5: Sistema de Gestión de Empleados","\u002Fejemplos\u002Fejemplo-05","8.ejemplos\u002F05.ejemplo-05",{"title":347,"icon":322,"path":348,"stem":349,"children":350,"page":42},"Actividades","\u002Factividades","9.actividades",[351,355,360,364,368,372,376,380,384,388,392,396,400,404,408],{"title":352,"path":353,"stem":354,"icon":105},"Actividad 1: Infografía sobre el proceso de compilación","\u002Factividades\u002Fact-01","9.actividades\u002F01.act-01",{"title":356,"path":357,"stem":358,"icon":359},"Actividad 2: Modelando Diagramas de Clases UML","\u002Factividades\u002Fact-02","9.actividades\u002F02.act-02","i-material-icon-theme-uml",{"title":361,"path":362,"stem":363,"icon":45},"Actividad 3: Creando Clases y Objetos en Java","\u002Factividades\u002Fact-03","9.actividades\u002F03.act-03",{"title":365,"path":366,"stem":367},"Actividad 4: Validando entradas de datos","\u002Factividades\u002Fact-04","9.actividades\u002F04.act-04",{"title":369,"path":370,"stem":371,"icon":105},"Actividad 5: Implementando una clase genérica","\u002Factividades\u002Fact-05","9.actividades\u002F05.act-05",{"title":373,"path":374,"stem":375,"icon":105},"Actividad 6: Expandiendo InputValidator con Predicados y Function","\u002Factividades\u002Fact-06","9.actividades\u002F06.act-06",{"title":377,"path":378,"stem":379,"icon":105},"Actividad 7: Gestor de Biblioteca con InputValidator","\u002Factividades\u002Fact-07","9.actividades\u002F07.act-07",{"title":381,"path":382,"stem":383,"icon":105},"Actividad 8: Calculadora de Figuras Geométricas","\u002Factividades\u002Fact-08","9.actividades\u002F08.act-08",{"title":385,"path":386,"stem":387,"icon":105},"Actividad 9: gestión de una empresa agroalimentaria","\u002Factividades\u002Fact-09","9.actividades\u002F09.act-09",{"title":389,"path":390,"stem":391,"icon":105},"Actividad 10: Sistema de gestión de clínicas veterinarias","\u002Factividades\u002Fact-10","9.actividades\u002F10.act-10",{"title":393,"path":394,"stem":395},"Definición de Proyecto Evolutivo","\u002Factividades\u002Frpg","9.actividades\u002F11.rpg",{"title":397,"path":398,"stem":399},"Actividad 11: Creación de Personajes","\u002Factividades\u002Fact-11","9.actividades\u002F12.act-11",{"title":401,"path":402,"stem":403},"Actividad 12: El Inventario y los Objetos","\u002Factividades\u002Fact-12","9.actividades\u002F13.act-12",{"title":405,"path":406,"stem":407},"Actividad 13: El combate por turnos","\u002Factividades\u002Fact-13","9.actividades\u002F14.act-13",{"title":409,"path":410,"stem":411},"Actividad 14: Guardando y Cargando","\u002Factividades\u002Fact-14","9.actividades\u002F15.act-14",{"id":413,"title":216,"body":414,"description":1433,"extension":1434,"links":1435,"meta":1436,"navigation":515,"path":217,"seo":1437,"stem":218,"__hash__":1438},"docs\u002F6.arreglos\u002F04.comparator.md",{"type":415,"value":416,"toc":1426},"minimark",[417,422,435,439,453,1027,1056,1065,1069,1084,1326,1352,1360,1364,1403,1407,1422],[418,419,421],"h2",{"id":420},"introducción-a-los-comparadores","Introducción a los comparadores",[423,424,425,426,430,431,434],"p",{},"En Java, un comparador es una función o método que se utiliza para comparar dos objetos o valores. Los comparadores son especialmente útiles cuando queremos ordenar colecciones de objetos, como listas o arreglos, basándonos en ciertos criterios. Para implementar un comparador personalizado en Java, podemos utilizar la interfaz ",[427,428,429],"code",{},"Comparator"," o la interfaz ",[427,432,433],{},"Comparable",". Ahora vamos cómo implementar ambas interfaces y cuándo usar cada una.",[418,436,438],{"id":437},"implementación-de-comparator","Implementación de Comparator",[423,440,441,442,444,445,448,449,452],{},"La interfaz ",[427,443,429],{}," se utiliza para definir un comparador personalizado que puede comparar dos objetos de una clase específica. Para implementar esta interfaz, debemos crear una clase que implemente el método ",[427,446,447],{},"compare",", que toma dos objetos como parámetros y devuelve un valor entero que indica su orden relativo. Aquí hay un ejemplo de cómo implementar un comparador para una clase ",[427,450,451],{},"Persona"," que compara por edad:",[454,455,457,705,805],"code-tree",{"default-value":456},"Persona.java",[458,459,464],"pre",{"className":460,"code":461,"filename":456,"language":462,"meta":463,"style":463},"language-java shiki shiki-themes github-dark","\u002F\u002F Definimos la clase Persona\nclass Persona {\n    private String nombre;\n    private int edad;\n\n    public Persona(String nombre, int edad) {\n        this.nombre = nombre;\n        this.edad = edad;\n    }\n\n    public String getNombre() {\n        return nombre;\n    }\n\n    public int getEdad() {\n        return edad;\n    }\n\n    @Override\n    public String toString() {\n        return nombre + \" (\" + edad + \" años)\";\n    }\n}\n","java","",[427,465,466,475,490,499,510,517,544,560,572,578,583,597,605,610,615,627,634,639,644,653,665,694,699],{"__ignoreMap":463},[467,468,471],"span",{"class":469,"line":470},"line",1,[467,472,474],{"class":473},"sAwPA","\u002F\u002F Definimos la clase Persona\n",[467,476,478,482,486],{"class":469,"line":477},2,[467,479,481],{"class":480},"snl16","class",[467,483,485],{"class":484},"svObZ"," Persona",[467,487,489],{"class":488},"s95oV"," {\n",[467,491,493,496],{"class":469,"line":492},3,[467,494,495],{"class":480},"    private",[467,497,498],{"class":488}," String nombre;\n",[467,500,502,504,507],{"class":469,"line":501},4,[467,503,495],{"class":480},[467,505,506],{"class":480}," int",[467,508,509],{"class":488}," edad;\n",[467,511,513],{"class":469,"line":512},5,[467,514,516],{"emptyLinePlaceholder":515},true,"\n",[467,518,520,523,525,528,532,535,538,541],{"class":469,"line":519},6,[467,521,522],{"class":480},"    public",[467,524,485],{"class":484},[467,526,527],{"class":488},"(String ",[467,529,531],{"class":530},"s9osk","nombre",[467,533,534],{"class":488},", ",[467,536,537],{"class":480},"int",[467,539,540],{"class":530}," edad",[467,542,543],{"class":488},") {\n",[467,545,547,551,554,557],{"class":469,"line":546},7,[467,548,550],{"class":549},"sDLfK","        this",[467,552,553],{"class":488},".nombre ",[467,555,556],{"class":480},"=",[467,558,559],{"class":488}," nombre;\n",[467,561,563,565,568,570],{"class":469,"line":562},8,[467,564,550],{"class":549},[467,566,567],{"class":488},".edad ",[467,569,556],{"class":480},[467,571,509],{"class":488},[467,573,575],{"class":469,"line":574},9,[467,576,577],{"class":488},"    }\n",[467,579,581],{"class":469,"line":580},10,[467,582,516],{"emptyLinePlaceholder":515},[467,584,586,588,591,594],{"class":469,"line":585},11,[467,587,522],{"class":480},[467,589,590],{"class":488}," String ",[467,592,593],{"class":484},"getNombre",[467,595,596],{"class":488},"() {\n",[467,598,600,603],{"class":469,"line":599},12,[467,601,602],{"class":480},"        return",[467,604,559],{"class":488},[467,606,608],{"class":469,"line":607},13,[467,609,577],{"class":488},[467,611,613],{"class":469,"line":612},14,[467,614,516],{"emptyLinePlaceholder":515},[467,616,618,620,622,625],{"class":469,"line":617},15,[467,619,522],{"class":480},[467,621,506],{"class":480},[467,623,624],{"class":484}," getEdad",[467,626,596],{"class":488},[467,628,630,632],{"class":469,"line":629},16,[467,631,602],{"class":480},[467,633,509],{"class":488},[467,635,637],{"class":469,"line":636},17,[467,638,577],{"class":488},[467,640,642],{"class":469,"line":641},18,[467,643,516],{"emptyLinePlaceholder":515},[467,645,647,650],{"class":469,"line":646},19,[467,648,649],{"class":488},"    @",[467,651,652],{"class":480},"Override\n",[467,654,656,658,660,663],{"class":469,"line":655},20,[467,657,522],{"class":480},[467,659,590],{"class":488},[467,661,662],{"class":484},"toString",[467,664,596],{"class":488},[467,666,668,670,673,676,680,683,686,688,691],{"class":469,"line":667},21,[467,669,602],{"class":480},[467,671,672],{"class":488}," nombre ",[467,674,675],{"class":480},"+",[467,677,679],{"class":678},"sU2Wk"," \" (\"",[467,681,682],{"class":480}," +",[467,684,685],{"class":488}," edad ",[467,687,675],{"class":480},[467,689,690],{"class":678}," \" años)\"",[467,692,693],{"class":488},";\n",[467,695,697],{"class":469,"line":696},22,[467,698,577],{"class":488},[467,700,702],{"class":469,"line":701},23,[467,703,704],{"class":488},"}\n",[458,706,709],{"className":460,"code":707,"filename":708,"language":462,"meta":463,"style":463},"\u002F\u002F Implementamos el comparador para comparar por edad\nimport java.util.Comparator;\nclass ComparadorPorEdad implements Comparator\u003CPersona> {\n    @Override\n    public int compare(Persona p1, Persona p2) {\n        return Integer.compare(p1.getEdad(), p2.getEdad());\n    }\n}\n","ComparadorPorEdad.java",[427,710,711,716,724,745,751,774,797,801],{"__ignoreMap":463},[467,712,713],{"class":469,"line":470},[467,714,715],{"class":473},"\u002F\u002F Implementamos el comparador para comparar por edad\n",[467,717,718,721],{"class":469,"line":477},[467,719,720],{"class":480},"import",[467,722,723],{"class":488}," java.util.Comparator;\n",[467,725,726,728,731,734,737,740,742],{"class":469,"line":492},[467,727,481],{"class":480},[467,729,730],{"class":484}," ComparadorPorEdad",[467,732,733],{"class":480}," implements",[467,735,736],{"class":484}," Comparator",[467,738,739],{"class":488},"\u003C",[467,741,451],{"class":480},[467,743,744],{"class":488},"> {\n",[467,746,747,749],{"class":469,"line":501},[467,748,649],{"class":488},[467,750,652],{"class":480},[467,752,753,755,757,760,763,766,769,772],{"class":469,"line":512},[467,754,522],{"class":480},[467,756,506],{"class":480},[467,758,759],{"class":484}," compare",[467,761,762],{"class":488},"(Persona ",[467,764,765],{"class":530},"p1",[467,767,768],{"class":488},", Persona ",[467,770,771],{"class":530},"p2",[467,773,543],{"class":488},[467,775,776,778,781,783,786,789,792,794],{"class":469,"line":519},[467,777,602],{"class":480},[467,779,780],{"class":488}," Integer.",[467,782,447],{"class":484},[467,784,785],{"class":488},"(p1.",[467,787,788],{"class":484},"getEdad",[467,790,791],{"class":488},"(), p2.",[467,793,788],{"class":484},[467,795,796],{"class":488},"());\n",[467,798,799],{"class":469,"line":546},[467,800,577],{"class":488},[467,802,803],{"class":469,"line":562},[467,804,704],{"class":488},[458,806,809],{"className":460,"code":807,"filename":808,"language":462,"meta":463,"style":463},"import java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\n\npublic class Main {\n    void main() {\n        List\u003CPersona> personas = new ArrayList\u003C>();\n        personas.add(new Persona(\"Alice\", 30));\n        personas.add(new Persona(\"Bob\", 25));\n        personas.add(new Persona(\"Charlie\", 35));\n\n        \u002F\u002F Ordenamos la lista de personas por edad usando el comparador\n        Collections.sort(personas, new ComparadorPorEdad());\n\n        \u002F\u002F Imprimimos la lista ordenada\n        for (Persona persona : personas) {\n            IO.println(persona);\n        }\n    }\n}\n","Main.java",[427,810,811,818,825,832,836,849,859,877,906,930,954,958,963,980,984,989,1003,1014,1019,1023],{"__ignoreMap":463},[467,812,813,815],{"class":469,"line":470},[467,814,720],{"class":480},[467,816,817],{"class":488}," java.util.ArrayList;\n",[467,819,820,822],{"class":469,"line":477},[467,821,720],{"class":480},[467,823,824],{"class":488}," java.util.Collections;\n",[467,826,827,829],{"class":469,"line":492},[467,828,720],{"class":480},[467,830,831],{"class":488}," java.util.List;\n",[467,833,834],{"class":469,"line":501},[467,835,516],{"emptyLinePlaceholder":515},[467,837,838,841,844,847],{"class":469,"line":512},[467,839,840],{"class":480},"public",[467,842,843],{"class":480}," class",[467,845,846],{"class":484}," Main",[467,848,489],{"class":488},[467,850,851,854,857],{"class":469,"line":519},[467,852,853],{"class":480},"    void",[467,855,856],{"class":484}," main",[467,858,596],{"class":488},[467,860,861,864,866,869,871,874],{"class":469,"line":546},[467,862,863],{"class":488},"        List\u003C",[467,865,451],{"class":480},[467,867,868],{"class":488},"> personas ",[467,870,556],{"class":480},[467,872,873],{"class":480}," new",[467,875,876],{"class":488}," ArrayList\u003C>();\n",[467,878,879,882,885,888,891,893,895,898,900,903],{"class":469,"line":562},[467,880,881],{"class":488},"        personas.",[467,883,884],{"class":484},"add",[467,886,887],{"class":488},"(",[467,889,890],{"class":480},"new",[467,892,485],{"class":484},[467,894,887],{"class":488},[467,896,897],{"class":678},"\"Alice\"",[467,899,534],{"class":488},[467,901,902],{"class":549},"30",[467,904,905],{"class":488},"));\n",[467,907,908,910,912,914,916,918,920,923,925,928],{"class":469,"line":574},[467,909,881],{"class":488},[467,911,884],{"class":484},[467,913,887],{"class":488},[467,915,890],{"class":480},[467,917,485],{"class":484},[467,919,887],{"class":488},[467,921,922],{"class":678},"\"Bob\"",[467,924,534],{"class":488},[467,926,927],{"class":549},"25",[467,929,905],{"class":488},[467,931,932,934,936,938,940,942,944,947,949,952],{"class":469,"line":580},[467,933,881],{"class":488},[467,935,884],{"class":484},[467,937,887],{"class":488},[467,939,890],{"class":480},[467,941,485],{"class":484},[467,943,887],{"class":488},[467,945,946],{"class":678},"\"Charlie\"",[467,948,534],{"class":488},[467,950,951],{"class":549},"35",[467,953,905],{"class":488},[467,955,956],{"class":469,"line":585},[467,957,516],{"emptyLinePlaceholder":515},[467,959,960],{"class":469,"line":599},[467,961,962],{"class":473},"        \u002F\u002F Ordenamos la lista de personas por edad usando el comparador\n",[467,964,965,968,971,974,976,978],{"class":469,"line":607},[467,966,967],{"class":488},"        Collections.",[467,969,970],{"class":484},"sort",[467,972,973],{"class":488},"(personas, ",[467,975,890],{"class":480},[467,977,730],{"class":484},[467,979,796],{"class":488},[467,981,982],{"class":469,"line":612},[467,983,516],{"emptyLinePlaceholder":515},[467,985,986],{"class":469,"line":617},[467,987,988],{"class":473},"        \u002F\u002F Imprimimos la lista ordenada\n",[467,990,991,994,997,1000],{"class":469,"line":629},[467,992,993],{"class":480},"        for",[467,995,996],{"class":488}," (Persona persona ",[467,998,999],{"class":480},":",[467,1001,1002],{"class":488}," personas) {\n",[467,1004,1005,1008,1011],{"class":469,"line":636},[467,1006,1007],{"class":488},"            IO.",[467,1009,1010],{"class":484},"println",[467,1012,1013],{"class":488},"(persona);\n",[467,1015,1016],{"class":469,"line":641},[467,1017,1018],{"class":488},"        }\n",[467,1020,1021],{"class":469,"line":646},[467,1022,577],{"class":488},[467,1024,1025],{"class":469,"line":655},[467,1026,704],{"class":488},[423,1028,1029,1030,1033,1034,1037,1038,1040,1041,1043,1044,1046,1047,1049,1050,1052,1053,1055],{},"En este ejemplo, la clase ",[427,1031,1032],{},"ComparadorPorEdad"," implementa la interfaz ",[427,1035,1036],{},"Comparator\u003CPersona>"," y define el método ",[427,1039,447],{}," para comparar dos objetos ",[427,1042,451],{}," basándose en su edad. El método devuelve un valor negativo si ",[427,1045,765],{}," es menor que ",[427,1048,771],{},", un valor positivo si ",[427,1051,765],{}," es mayor que ",[427,1054,771],{},", y cero si ambos son iguales. Luego, podemos usar este comparador para ordenar una lista de personas por edad.",[1057,1058,441,1059,1061,1062,1064],"tip",{},[427,1060,429],{}," es útil cuando queremos definir múltiples criterios de comparación para una clase, ya que podemos crear diferentes clases que implementen ",[427,1063,429],{}," para comparar por diferentes atributos (por ejemplo, por nombre, por altura, etc.).",[418,1066,1068],{"id":1067},"implementación-de-comparable","Implementación de Comparable",[423,1070,441,1071,1073,1074,1077,1078,1080,1081,1083],{},[427,1072,433],{}," se utiliza para definir un orden natural para los objetos de una clase. Para implementar esta interfaz, debemos hacer que la clase implemente el método ",[427,1075,1076],{},"compareTo",", que toma un objeto del mismo tipo como parámetro y devuelve un valor entero que indica su orden relativo. Aquí hay un ejemplo de cómo implementar ",[427,1079,433],{}," para la clase ",[427,1082,451],{}," comparando por nombre:",[458,1085,1087],{"className":460,"code":1086,"filename":456,"language":462,"meta":463,"style":463},"\u002F\u002F Definimos la clase Persona implementando Comparable\nclass Persona implements Comparable\u003CPersona> {\n\n    private String nombre;\n    private int edad;\n\n    public Persona(String nombre, int edad) {\n        this.nombre = nombre;\n        this.edad = edad;\n    }\n\n    public String getNombre() {\n        return nombre;\n    }\n\n    public int getEdad() {\n        return edad;\n    }\n\n    @Override\n    public String toString() {\n        return nombre + \" (\" + edad + \" años)\";\n    }\n\n    @Override\n    public int compareTo(Persona otraPersona) {\n        return this.nombre.compareTo(otraPersona.getNombre());\n    }\n}\n",[427,1088,1089,1094,1111,1115,1121,1129,1133,1151,1161,1171,1175,1179,1189,1195,1199,1203,1213,1219,1223,1227,1233,1243,1263,1267,1272,1279,1296,1316,1321],{"__ignoreMap":463},[467,1090,1091],{"class":469,"line":470},[467,1092,1093],{"class":473},"\u002F\u002F Definimos la clase Persona implementando Comparable\n",[467,1095,1096,1098,1100,1102,1105,1107,1109],{"class":469,"line":477},[467,1097,481],{"class":480},[467,1099,485],{"class":484},[467,1101,733],{"class":480},[467,1103,1104],{"class":484}," Comparable",[467,1106,739],{"class":488},[467,1108,451],{"class":480},[467,1110,744],{"class":488},[467,1112,1113],{"class":469,"line":492},[467,1114,516],{"emptyLinePlaceholder":515},[467,1116,1117,1119],{"class":469,"line":501},[467,1118,495],{"class":480},[467,1120,498],{"class":488},[467,1122,1123,1125,1127],{"class":469,"line":512},[467,1124,495],{"class":480},[467,1126,506],{"class":480},[467,1128,509],{"class":488},[467,1130,1131],{"class":469,"line":519},[467,1132,516],{"emptyLinePlaceholder":515},[467,1134,1135,1137,1139,1141,1143,1145,1147,1149],{"class":469,"line":546},[467,1136,522],{"class":480},[467,1138,485],{"class":484},[467,1140,527],{"class":488},[467,1142,531],{"class":530},[467,1144,534],{"class":488},[467,1146,537],{"class":480},[467,1148,540],{"class":530},[467,1150,543],{"class":488},[467,1152,1153,1155,1157,1159],{"class":469,"line":562},[467,1154,550],{"class":549},[467,1156,553],{"class":488},[467,1158,556],{"class":480},[467,1160,559],{"class":488},[467,1162,1163,1165,1167,1169],{"class":469,"line":574},[467,1164,550],{"class":549},[467,1166,567],{"class":488},[467,1168,556],{"class":480},[467,1170,509],{"class":488},[467,1172,1173],{"class":469,"line":580},[467,1174,577],{"class":488},[467,1176,1177],{"class":469,"line":585},[467,1178,516],{"emptyLinePlaceholder":515},[467,1180,1181,1183,1185,1187],{"class":469,"line":599},[467,1182,522],{"class":480},[467,1184,590],{"class":488},[467,1186,593],{"class":484},[467,1188,596],{"class":488},[467,1190,1191,1193],{"class":469,"line":607},[467,1192,602],{"class":480},[467,1194,559],{"class":488},[467,1196,1197],{"class":469,"line":612},[467,1198,577],{"class":488},[467,1200,1201],{"class":469,"line":617},[467,1202,516],{"emptyLinePlaceholder":515},[467,1204,1205,1207,1209,1211],{"class":469,"line":629},[467,1206,522],{"class":480},[467,1208,506],{"class":480},[467,1210,624],{"class":484},[467,1212,596],{"class":488},[467,1214,1215,1217],{"class":469,"line":636},[467,1216,602],{"class":480},[467,1218,509],{"class":488},[467,1220,1221],{"class":469,"line":641},[467,1222,577],{"class":488},[467,1224,1225],{"class":469,"line":646},[467,1226,516],{"emptyLinePlaceholder":515},[467,1228,1229,1231],{"class":469,"line":655},[467,1230,649],{"class":488},[467,1232,652],{"class":480},[467,1234,1235,1237,1239,1241],{"class":469,"line":667},[467,1236,522],{"class":480},[467,1238,590],{"class":488},[467,1240,662],{"class":484},[467,1242,596],{"class":488},[467,1244,1245,1247,1249,1251,1253,1255,1257,1259,1261],{"class":469,"line":696},[467,1246,602],{"class":480},[467,1248,672],{"class":488},[467,1250,675],{"class":480},[467,1252,679],{"class":678},[467,1254,682],{"class":480},[467,1256,685],{"class":488},[467,1258,675],{"class":480},[467,1260,690],{"class":678},[467,1262,693],{"class":488},[467,1264,1265],{"class":469,"line":701},[467,1266,577],{"class":488},[467,1268,1270],{"class":469,"line":1269},24,[467,1271,516],{"emptyLinePlaceholder":515},[467,1273,1275,1277],{"class":469,"line":1274},25,[467,1276,649],{"class":488},[467,1278,652],{"class":480},[467,1280,1282,1284,1286,1289,1291,1294],{"class":469,"line":1281},26,[467,1283,522],{"class":480},[467,1285,506],{"class":480},[467,1287,1288],{"class":484}," compareTo",[467,1290,762],{"class":488},[467,1292,1293],{"class":530},"otraPersona",[467,1295,543],{"class":488},[467,1297,1299,1301,1304,1307,1309,1312,1314],{"class":469,"line":1298},27,[467,1300,602],{"class":480},[467,1302,1303],{"class":549}," this",[467,1305,1306],{"class":488},".nombre.",[467,1308,1076],{"class":484},[467,1310,1311],{"class":488},"(otraPersona.",[467,1313,593],{"class":484},[467,1315,796],{"class":488},[467,1317,1319],{"class":469,"line":1318},28,[467,1320,577],{"class":488},[467,1322,1324],{"class":469,"line":1323},29,[467,1325,704],{"class":488},[423,1327,1029,1328,1033,1330,1037,1333,1040,1335,1337,1338,1341,1342,1344,1345,1348,1349,1351],{},[427,1329,451],{},[427,1331,1332],{},"Comparable\u003CPersona>",[427,1334,1076],{},[427,1336,451],{}," basándose en su nombre. El método devuelve un valor negativo si el nombre de ",[427,1339,1340],{},"this"," es menor que el nombre de ",[427,1343,1293],{},", un valor positivo si es mayor, y cero si ambos nombres son iguales. Luego, podemos ordenar una lista de personas por su nombre utilizando el método ",[427,1346,1347],{},"Collections.sort"," sin necesidad de proporcionar un comparador adicional, ya que la clase ",[427,1350,451],{}," ya define su orden natural.",[1057,1353,441,1354,1356,1357,1359],{},[427,1355,433],{}," es útil cuando queremos definir un orden natural para los objetos de una clase, y solo necesitamos un criterio de comparación. Sin embargo, si necesitamos múltiples criterios de comparación o no queremos modificar la clase original, es mejor usar la interfaz ",[427,1358,429],{},".",[418,1361,1363],{"id":1362},"diferencias-entre-comparator-y-comparable","Diferencias entre Comparator y Comparable",[1365,1366,1367,1376,1384,1395],"ul",{},[1368,1369,1370,1372,1373,1375],"li",{},[427,1371,433],{}," se implementa en la clase que queremos comparar, mientras que ",[427,1374,429],{}," se implementa en una clase separada.",[1368,1377,1378,1380,1381,1383],{},[427,1379,433],{}," define un orden natural para los objetos, mientras que ",[427,1382,429],{}," permite definir múltiples criterios de comparación.",[1368,1385,1386,1388,1389,1391,1392,1394],{},[427,1387,433],{}," solo puede tener un método ",[427,1390,1076],{},", mientras que ",[427,1393,429],{}," puede ser implementado por múltiples clases para diferentes criterios de comparación para la misma clase de objetos.",[1368,1396,1397,1399,1400,1402],{},[427,1398,433],{}," es útil cuando queremos que los objetos tengan un orden natural, mientras que ",[427,1401,429],{}," es útil cuando queremos ordenar objetos de una clase sin modificar la clase original o cuando necesitamos múltiples formas de ordenar los objetos.",[418,1404,1406],{"id":1405},"conclusión","Conclusión",[423,1408,1409,1410,1412,1413,1415,1416,1418,1419,1421],{},"En resumen, los comparadores son herramientas esenciales para comparar y ordenar objetos en Java. La interfaz ",[427,1411,429],{}," nos permite definir comparadores personalizados para diferentes criterios de comparación, mientras que la interfaz ",[427,1414,433],{}," nos permite definir un orden natural para los objetos de una clase. Al elegir entre ",[427,1417,429],{}," y ",[427,1420,433],{},", debemos considerar si queremos modificar la clase original y si necesitamos múltiples criterios de comparación.",[1423,1424,1425],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":463,"searchDepth":477,"depth":477,"links":1427},[1428,1429,1430,1431,1432],{"id":420,"depth":477,"text":421},{"id":437,"depth":477,"text":438},{"id":1067,"depth":477,"text":1068},{"id":1362,"depth":477,"text":1363},{"id":1405,"depth":477,"text":1406},"En esta sección se introduce el concepto de comparadores, que son funciones o métodos utilizados para comparar dos objetos o valores. Se explica cómo implementar comparadores personalizados en Java utilizando la interfaz Comparator, y se proporcionan ejemplos de cómo utilizar comparadores para ordenar colecciones de objetos. Además de mostrar la diferencia entre Comparator y Comparable, y cómo elegir cuál usar en diferentes situaciones.","md",null,{},{"title":216,"description":1433},"WQ_GKwcUORkpy0h2B4ZLBn1Bug8n7paFcKIYiHb_E4U",[1440,1442],{"title":212,"path":213,"stem":214,"description":1441,"children":-1},"En esta sección se introduce el concepto de matrices, que son arreglos bidimensionales. Se explican las características de las matrices, cómo se declaran y se utilizan en diferentes lenguajes de programación.",{"title":220,"path":221,"stem":222,"description":1443,"children":-1},"Explora los arreglos dinámicos con ArrayList en Java, una estructura de datos que permite almacenar elementos de manera flexible. Aprende a crear, modificar y gestionar tus listas de datos con esta poderosa herramienta.",1779479571219]