{"id":20255927,"url":"https://github.com/publioelio/bibliotecaarraysjava","last_synced_at":"2025-03-03T17:46:57.988Z","repository":{"id":173666342,"uuid":"589586448","full_name":"PublioElio/bibliotecaArraysJava","owner":"PublioElio","description":"Este repositorio contiene funciones propias desarrolladas en Java para el manejo de arrays de números enteros, imitando métodos existentes de la clase Arrays.","archived":false,"fork":false,"pushed_at":"2023-01-17T19:04:52.000Z","size":58,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-14T03:42:19.065Z","etag":null,"topics":["array-manipulations","array-methods","basic-algorithms","basic-programming-concepts","learning-resources"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PublioElio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-16T13:22:19.000Z","updated_at":"2023-01-16T13:31:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"e9cd8bd3-dcb4-4fdc-b456-471b1a4375aa","html_url":"https://github.com/PublioElio/bibliotecaArraysJava","commit_stats":null,"previous_names":["publioelio/bibliotecaarraysjava"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PublioElio%2FbibliotecaArraysJava","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PublioElio%2FbibliotecaArraysJava/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PublioElio%2FbibliotecaArraysJava/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PublioElio%2FbibliotecaArraysJava/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PublioElio","download_url":"https://codeload.github.com/PublioElio/bibliotecaArraysJava/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241713854,"owners_count":20007894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["array-manipulations","array-methods","basic-algorithms","basic-programming-concepts","learning-resources"],"created_at":"2024-11-14T10:42:06.256Z","updated_at":"2025-03-03T17:46:57.964Z","avatar_url":"https://github.com/PublioElio.png","language":"Java","readme":"\u003cdiv id=\"header\" align=\"center\"\u003e\n  \u003cimg src=\"https://media.giphy.com/media/N4h9A9o5TcWmjdQZVJ/giphy.gif\" width=\"250\"/\u003e\n\u003c/div\u003e\n\n# Biblioteca Arrays de Java\nEste repositorio contiene funciones propias desarrolladas en Java para el manejo de _arrays_ de números enteros, imitando métodos existentes de la clase `Arrays` o `System`. La principal función del código del presente repositorio es entender mejor el funcionamiento de estos métodos y practicar algoritmia básica con _arrays_.\n\n## Índice\n\nLa clase BibliotecaArrays contiene las siguientes funciones:\n\n- [buscar](#buscar)\n- [muestraArray](#muestraarray)\n- [copiaDe](#copiade)\n- [copiaDeRango](#copiaderango)\n- [arrayCopia](#arraycopia)\n- [insertarNoOrdenada](#insertarnoordenada)\n- [insertarOrdenada](#insertarordenada)\n- [eliminarNoOrdenada](#eliminarnoordenada)\n- [eliminarOrdenada](#eliminarordenada)\n- [iguales](#iguales)\n\n## Explicación de las funciones\n\n### buscar\nEste método busca un elemento en un _array_ de enteros, devolviendo la posición donde lo ha encontrado, o un -1 si ese elemento no se encuentra en el _array_:\n```\npublic static int buscar(int array[], int clave) {\n    int pos = -1;\n    for (int i = 0; (i \u003c array.length) \u0026\u0026 (pos == -1); i++) {\n        pos = array[i] == clave ? i : -1;\n    }\n    return (pos);\n}\n```\n### muestraArray\nEste método muestra por terminal un _array_ con sus elementos entre corchetes y separados por barras verticales.\n```\npublic static void muestraArray(int[] array) {\n    System.out.print(\"[\");\n    for (int i = 0; i \u003c array.length; i++) {\n        if (i == (array.length - 1)) {\n            System.out.print(array[i]);\n        } else {\n            System.out.print(array[i] + \" | \");\n        }\n    }\n    System.out.println(\"]\");\n}\n```\n### copiaDe\nEste método imita el comportamiento del método [copyOf](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOf(int[],%20int)), copiando un array en otro de una determinada longitud. Si el nuevo _array_ el mayor que el anterior, llena los \"huecos\" con ceros, si la longitud del nuevo _array_ es inferior, copia hasta la longitud especificada:\n```\npublic static int[] copiaDe(int[] origen, int longitud) {\n    int[] destino = new int[longitud];\n    for (int i = 0; (i \u003c longitud) \u0026\u0026 (i \u003c origen.length); i++) {\n        destino[i] = origen[i];\n    }\n    return (destino);\n}\n```\n### copiaDeRango\nEste método imita el comportamiento del método [copyOfRange](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOfRange(int[],%20int,%20int)), copiando un rango de elementos dentro de un _array_ y devolviéndolo en un nuevo _array_:\n```\npublic static int[] copiaDeRango(int[] origen, int desde, int hasta) {\n    int[] destino = new int[hasta - desde];\n    for (int i = 0; i \u003c destino.length; i++) {\n        destino[i] = origen[desde + i];\n    }\n    return (destino);\n}\n```\n### arrayCopia\nEste método imita el comportamiento del método [arrayCopy](https://docs.oracle.com/javase/7/docs/api/java/lang/System.html#arraycopy(java.lang.Object,%20int,%20java.lang.Object,%20int,%20int)), copiando un fragmento de un _array_ en otro, eliminando de esta forma, el contenido previo de esos elementos del _array_ destino:\n```\npublic static void arrayCopia(int[] origen, int posicionOrigen, int[] destino, int posicionDestino, int longitud) {\n    for (int i = 0; i \u003c longitud; i++) {\n        destino[posicionDestino + i] = origen[posicionOrigen + i];\n    }\n}\n```\n### insertarNoOrdenada\nEste método inserta un elemento al final de un _array_ cuyos elementos están desordenados:\n```\npublic static int[] insertarNoOrdenada(int[] origen, int elemento) {\n    origen = copiaDe(origen, origen.length + 1);\n    origen[origen.length - 1] = elemento;\n    return (origen);\n}\n```\n### insertarOrdenada\nEste método inserta un nuevo elemento en un _array_ ordenado. El código hace uso del método [Arrays.binarySearch](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#binarySearch(int[],%20int)), así que hay que importar la clase `Arrays` para usar este método.\n```\npublic static int[] insertarOrdenada(int[] array, int nuevo) {\n        int indiceInsercion = Arrays.binarySearch(array, nuevo);\n        if (indiceInsercion \u003c 0) {\n            indiceInsercion = -indiceInsercion - 1;\n        }\n        int copia[] = new int[array.length + 1];\n        arrayCopia(array, 0, copia, 0, indiceInsercion);\n        arrayCopia(array, indiceInsercion, copia, (indiceInsercion + 1), (array.length - indiceInsercion));\n        copia[indiceInsercion] = nuevo;\n        return (copia);\n}\n```\n### eliminarNoOrdenada\nEste método elimina un elemento dentro de un _array_ desordenado (si lo encuentra):\n```\npublic static int[] eliminarNoOrdenada(int[] array, int clave) {\n    int indiceBorrado;\n    indiceBorrado = buscar(array, clave);\n    if (indiceBorrado != -1) {\n        array[indiceBorrado] = array[array.length - 1];\n        array = copiaDe(array, array.length - 1);\n    }\n    return (array);\n}\n```\n### eliminarOrdenada\nEste método elimina un elemento de un _array_ ordenado de enteros, al igual que el método `insertarOrdenada` de esta biblioteca, tendremos que immportar la clase [Arrays.binarySearch](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#binarySearch(int[],%20int)).\n```\npublic static int[] eliminarOrdenada(int[] origen, int elemento) {\n    int indiceBorrado;\n    indiceBorrado = Arrays.binarySearch(origen, elemento);\n    if (indiceBorrado \u003e= 0) {\n        for (int i = indiceBorrado; i \u003c origen.length - 1; i++) {\n            origen[i] = origen[i + 1];\n        }\n        origen = copiaDe(origen, origen.length - 1);\n    }\n    return (origen);\n}\n```\n### iguales \nEste método compara dos _arrays_ y devuelve _'true'_ si contiene el mismo número de elementos en el mismo orden, es decir, si ambos _arrays_ son idénticos. Es una imitación del método [Arrays.equals](https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#equals(int[],%20int[])):\n```\npublic static boolean iguales(int[] a, int[] b) {\n    boolean sonIguales = false;\n\n    if (a.length == b.length) {\n        sonIguales = true;\n        for (int i = 0; i \u003c a.length \u0026\u0026 sonIguales; i++) {\n            sonIguales = a[i] == b[i];\n        }\n    }\n    return (sonIguales);\n}\n```\n## Implementación en el código\nPara emplear esta biblioteca, hay que incluir el archivo `BibliotecaArrays.java` en tu proyecto e importarlo en aquellas clases donde se llame a cualquiera de sus métodos, con la siguiente línea de código justo antes del `main`:\n```\nimport static biblioteca.arrays.BibliotecaArrays.*;\n```\n## Testeo\nLos métodos de la presente biblioteca se han testeado con la clase `TestBibliotecaArrays.java`\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpublioelio%2Fbibliotecaarraysjava","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpublioelio%2Fbibliotecaarraysjava","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpublioelio%2Fbibliotecaarraysjava/lists"}