Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesCódigo-Fonte Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais
Você está aqui: Java ::: Estruturas de Dados ::: Grafos

Como criar um grafo em Java - Estruturas de dados em Java para iniciantes

Quantidade de visualizações: 936 vezes
Depois de estudar as listas, pilhas, filas e árvores (binárias ou não), o estudo de grafos é a próxima etapa no campo das estruturas de dados. E nesta dica eu mostrarei a descrição da estrutura de dados grafo e como criá-la na linguagem Java, passo-a-passo.

Grafos são estruturas de dados formadas por um conjunto de vértices e um conjunto de arestas. Os vértices são os nós e as arestas são responsáveis por fazer as ligações entre esses nós. Vértice em inglês é vertex, enquanto aresta é edge. Alguns autores também gostam de chamar a aresta de arco (no caso dos grafos dirigidos, que veremos mais adiante).

Antes de prosseguirmos, vamos ver um exemplo de grafo:



Nesta imagem as cidades representam os vértices do grafo, enquanto as ligações entre elas são as arestas. Note que este é um grafo orientado, também chamado de dirigido ou digrafo, pois as arestas possuem uma direção.

Dessa forma, a partir de Goiânia nós podemos ir para Cuiabá e Belém, sem caminho contrário. A partir de Belém podemos ir para Manaus e de Manaus para Goiânia. Veja que cada aresta possui um número associado. Em nosso caso, coloquei a distância entre as cidades (só como exemplo, é claro). Ao fazermos isso, cada aresta possui um peso, tornando o grafo um grafo valorado.

Onde encontro exemplos e aplicações de grafos?

Grafos são muito usados na representação de rotas de voos, grades curriculares, mapas de estradas, redes de computadores, mapas de metrô, relacionamento entre as pessoas em redes sociais, e muito mais. Algoritmos de percurso em grafos são estudados e aprimorados todos os dias. O algoritmo de Dijkstra, concebido pelo cientista da computação holandês Edsger Dijkstra em 1956 e publicado em 1959, soluciona o problema do caminho mais curto em um grafo dirigido ou não dirigido com arestas de peso não negativo.

Implementação de grafos em Java

Vamos programar agora? A seguir eu mostro como podemos reproduzir em código Java o grafo de cidades que vimos acima. Para isso usaremos programação orientada a objetos e ArrayLists. Em resumo nós criaremos as classes Grafo, Vertice e Aresta e usaremos objetos ArrayList para guardar os vértices no grafo e relacionar as arestas de um determinado vértice. No código eu mostro como é possível combinar grafos dirigidos e não dirigidos na mesma implementação. Vamos começar?

A classe Aresta

Para começarmos, veja o código para a classe Aresta, que possui duas variáveis do tipo Vertice represetando o vértice de origem e o de destino. Na nossa aplicação, seriam a cidade de origem e a cidade de destino. A variável peso representa a distância (não verificada) entre elas.

Este código completo faz parte do nosso Super Pack Aprenda a Programar - 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos.
Domine lógica de programação e várias linguagens de programação com o nosso Super Pack Aprenda a Programar - 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos.

Torne-se um(a) expert em Java, Portugol, VisuAlg, Python, PHP, JavaScript, Delphi, C, C++, C#, VB.NET, LISP, Ruby, e muito mais. São mais de 15.000 páginas com conteúdo exclusivo para você estudar onde e quando quiser.
Me Fala Mais


A classe Vertice

Agora que já temos a classe Aresta, vamos passar a para a classe Vertice, que representa cada cidade no nosso exemplo. A primeira coisa a observar é que a classe Vertice possui como variáveis o nome da cidade e uma ArrayList de arestas. Note também o método adicionarAresta(), que permite informar o vértice de destino e o peso da aresta.

O método removerAresta() recebe o vértice de destino e remove a aresta correspondente. Finalmente o método exibir() permite exibir todas as arestas de um determinado vértice.

Este código completo faz parte do nosso Super Pack Aprenda a Programar - 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos.
Domine lógica de programação e várias linguagens de programação com o nosso Super Pack Aprenda a Programar - 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos.

Torne-se um(a) expert em Java, Portugol, VisuAlg, Python, PHP, JavaScript, Delphi, C, C++, C#, VB.NET, LISP, Ruby, e muito mais. São mais de 15.000 páginas com conteúdo exclusivo para você estudar onde e quando quiser.
Me Fala Mais


A classe Grafo

Agora que já temos as classe Aresta e Vertice, vamos criar a classe Grafo. Comece observando que esta classe possui uma ArrayList de vértices e duas variáveis boleanas indicando se o grafo possui pesos (valorado) e se é dirigido (digrafo) ou não.

O método adicionarVertice() recebe o nome da cidade e permite criar um novo vértice no grafo. O método adicionarAresta() recebe dois vértices e os liga por meio de uma aresta. Note também a passagem do peso para a aresta. Se o grafo for dirigido, a aresta é inserida tanto para o vértice de origem quanto para o vértice de destino.

Temos ainda os métodos removerAresta(), removerVertice(), buscarVerticeValor() e exibirVertices(), todos devidamente comentados para facilitar o seu entendimento.

Este código completo faz parte do nosso Super Pack Aprenda a Programar - 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos.
Domine lógica de programação e várias linguagens de programação com o nosso Super Pack Aprenda a Programar - 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos.

Torne-se um(a) expert em Java, Portugol, VisuAlg, Python, PHP, JavaScript, Delphi, C, C++, C#, VB.NET, LISP, Ruby, e muito mais. São mais de 15.000 páginas com conteúdo exclusivo para você estudar onde e quando quiser.
Me Fala Mais


A classe de teste

Para finalizar, veja o código para a classe principal que nos permite criar um grafo digirido, com pesos para as arestas e representando exatamente as ligações da figura acima. Experimente trocar os valores e veja os resultados interessantes que obtemos.

Este código completo faz parte do nosso Super Pack Aprenda a Programar - 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos.
Domine lógica de programação e várias linguagens de programação com o nosso Super Pack Aprenda a Programar - 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos.

Torne-se um(a) expert em Java, Portugol, VisuAlg, Python, PHP, JavaScript, Delphi, C, C++, C#, VB.NET, LISP, Ruby, e muito mais. São mais de 15.000 páginas com conteúdo exclusivo para você estudar onde e quando quiser.
Me Fala Mais


Ao executar este código Java completo nós teremos o seguinte resultado:

Goiânia --> Cuiabá (850), Belém (1740)
Cuiabá --> (Vazio)
Manaus --> Goiânia (730)
Belém --> Manaus (420)

Link para compartilhar na Internet ou com seus amigos:

Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de Java - Como retornar o primeiro elemento de um array em Java

Quantidade de visualizações: 536 vezes
Pergunta/Tarefa:

Escreva um programa Java que mostra como acessar e retornar o primeiro elemento de um array (vetor) Java.

Sua saída deverá ser parecida com:

Os elementos do vetor são: [9, 5, 3, 2, 4, 8]
O primeiro elemento do array é: 9 
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

Este código completo faz parte do nosso E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas.
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book



Java ::: Reflection (introspecção) e RTI (Runtime Type Information) ::: Passos Iniciais

Como obter os modificadores dos métodos de uma classe ou interface usando o método getModifiers() da classe Method da linguagem Java

Quantidade de visualizações: 8507 vezes
O método getModifiers() da classe Method permite obter os modificadores (public, static, final, private, etc) de um determinado método. O retorno deste método é um valor inteiro que pode ser testado usando alguns métodos estáticos da classe Modifier.

O exemplo a seguir mostra como listar todos os métodos públicos da classe javax.swing.JButton e seus modificadores:

Este código completo faz parte do nosso Super Pack Aprenda a Programar - 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos.
Domine lógica de programação e várias linguagens de programação com o nosso Super Pack Aprenda a Programar - 12.000 Dicas e Truques de Programação e 1.500 Exercícios Resolvidos.

Torne-se um(a) expert em Java, Portugol, VisuAlg, Python, PHP, JavaScript, Delphi, C, C++, C#, VB.NET, LISP, Ruby, e muito mais. São mais de 15.000 páginas com conteúdo exclusivo para você estudar onde e quando quiser.
Me Fala Mais


Ao executar este exemplo nós teremos uma lista gigantesca de métodos declarados e herdados pela classe javax.swing.JButton. Veja:

getAccessibleContext - public
getUIClassID - public
isDefaultButton - public
isDefaultCapable - public
removeNotify - public
setDefaultCapable - public
updateUI - public
getUI - public
setAction - public
setModel - public
setUI - public
addActionListener - public
addChangeListener - public
addItemListener - public
doClick - public
doClick - public
getAction - public
getActionCommand - public
getActionListeners - public
getChangeListeners - public
getDisabledIcon - public
getDisabledSelectedIcon - public
getDisplayedMnemonicIndex - public
getHideActionText - public
getHorizontalAlignment - public
getHorizontalTextPosition - public
getIcon - public
getIconTextGap - public
getItemListeners - public
getLabel - public
getMargin - public
getMnemonic - public
getModel - public
getMultiClickThreshhold - public
getPressedIcon - public
getRolloverIcon - public
getRolloverSelectedIcon - public
getSelectedIcon - public
getSelectedObjects - public
getText - public
getVerticalAlignment - public
getVerticalTextPosition - public
imageUpdate - public
isBorderPainted - public
isContentAreaFilled - public
isFocusPainted - public
isRolloverEnabled - public
isSelected - public
removeActionListener - public
removeChangeListener - public
removeItemListener - public
setActionCommand - public
setBorderPainted - public
setContentAreaFilled - public
setDisabledIcon - public
setDisabledSelectedIcon - public
setDisplayedMnemonicIndex - public
setEnabled - public
setFocusPainted - public
setHideActionText - public
setHorizontalAlignment - public
setHorizontalTextPosition - public
setIcon - public
setIconTextGap - public
setLabel - public
setLayout - public
setMargin - public
setMnemonic - public
setMnemonic - public
setMultiClickThreshhold - public
setPressedIcon - public
setRolloverEnabled - public
setRolloverIcon - public
setRolloverSelectedIcon - public
setSelected - public
setSelectedIcon - public
setText - public
setVerticalAlignment - public
setVerticalTextPosition - public
update - public
contains - public
getLocation - public
print - public
getSize - public
isOpaque - public
disable - public
enable - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
getRootPane - public
getListeners - public
paintImmediately - public
paintImmediately - public
repaint - public
repaint - public
revalidate - public
setAlignmentX - public
setAlignmentY - public
addAncestorListener - public
addNotify - public
addVetoableChangeListener - public
computeVisibleRect - public
createToolTip - public
getActionForKeyStroke - public
getActionMap - public final
getAlignmentX - public
getAlignmentY - public
getAncestorListeners - public
getAutoscrolls - public
getBaseline - public
getBaselineResizeBehavior - public
getBorder - public
getBounds - public
getClientProperty - public final
getComponentPopupMenu - public
getConditionForKeyStroke - public
getDebugGraphicsOptions - public
getDefaultLocale - public static
getFontMetrics - public
getGraphics - public
getHeight - public
getInheritsPopupMenu - public
getInputMap - public final
getInputMap - public final
getInputVerifier - public
getInsets - public
getInsets - public
getMaximumSize - public
getMinimumSize - public
getNextFocusableComponent - public
getPopupLocation - public
getPreferredSize - public
getRegisteredKeyStrokes - public
getToolTipLocation - public
getToolTipText - public
getToolTipText - public
getTopLevelAncestor - public
getTransferHandler - public
getVerifyInputWhenFocusTarget - public
getVetoableChangeListeners - public
getVisibleRect - public
getWidth - public
getX - public
getY - public
grabFocus - public
hide - public
isDoubleBuffered - public
isLightweightComponent - public static
isManagingFocus - public
isOptimizedDrawingEnabled - public
isPaintingForPrint - public final
isPaintingTile - public
isRequestFocusEnabled - public
isValidateRoot - public
paint - public
printAll - public
putClientProperty - public final
registerKeyboardAction - public
registerKeyboardAction - public
removeAncestorListener - public
removeVetoableChangeListener - public
requestDefaultFocus - public
requestFocus - public
requestFocus - public
requestFocusInWindow - public
resetKeyboardActions - public
reshape - public
scrollRectToVisible - public
setActionMap - public final
setAutoscrolls - public
setBackground - public
setBorder - public
setComponentPopupMenu - public
setDebugGraphicsOptions - public
setDefaultLocale - public static
setDoubleBuffered - public
setFocusTraversalKeys - public
setFont - public
setForeground - public
setInheritsPopupMenu - public
setInputMap - public final
setInputVerifier - public
setMaximumSize - public
setMinimumSize - public
setNextFocusableComponent - public
setOpaque - public
setPreferredSize - public
setRequestFocusEnabled - public
setToolTipText - public
setTransferHandler - public
setVerifyInputWhenFocusTarget - public
setVisible - public
unregisterKeyboardAction - public
add - public
add - public
add - public
add - public
add - public
remove - public
remove - public
list - public
list - public
removeAll - public
addPropertyChangeListener - public
addPropertyChangeListener - public
getComponent - public
getComponentCount - public
getComponents - public
getFocusTraversalPolicy - public
invalidate - public
isFocusCycleRoot - public
isFocusCycleRoot - public
setFocusTraversalPolicy - public
addContainerListener - public
applyComponentOrientation - public
areFocusTraversalKeysSet - public
countComponents - public
deliverEvent - public
doLayout - public
findComponentAt - public
findComponentAt - public
getComponentAt - public
getComponentAt - public
getComponentZOrder - public
getContainerListeners - public
getFocusTraversalKeys - public
getLayout - public
getMousePosition - public
insets - public
isAncestorOf - public
isFocusTraversalPolicyProvider - public final
isFocusTraversalPolicySet - public
layout - public
locate - public
minimumSize - public
paintComponents - public
preferredSize - public
printComponents - public
removeContainerListener - public
setComponentZOrder - public
setFocusCycleRoot - public
setFocusTraversalPolicyProvider - public final
transferFocusDownCycle - public
validate - public
add - public
remove - public
toString - public
getName - public
contains - public
size - public
getLocation - public
getParent - public
setName - public
list - public
list - public
list - public
getSize - public
location - public
setSize - public
setSize - public
resize - public
resize - public
enable - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
firePropertyChange - public
action - public
isEnabled - public
isFocusOwner - public
removePropertyChangeListener - public
removePropertyChangeListener - public
repaint - public
repaint - public
repaint - public
getBackground - public
getBounds - public
getFocusCycleRootAncestor - public
getFont - public
getForeground - public
getPeer - public
getPropertyChangeListeners - public
getPropertyChangeListeners - public
getTreeLock - public final
isDisplayable - public
isMaximumSizeSet - public
isMinimumSizeSet - public
isPreferredSizeSet - public
isShowing - public
isVisible - public
nextFocus - public
setBounds - public
setBounds - public
setLocale - public
setLocation - public
setLocation - public
dispatchEvent - public final
getGraphicsConfiguration - public
getMousePosition - public
handleEvent - public
isFocusable - public
isLightweight - public
isValid - public
postEvent - public
transferFocus - public
transferFocusBackward - public
addComponentListener - public
addFocusListener - public
addHierarchyBoundsListener - public
addHierarchyListener - public
addInputMethodListener - public
addKeyListener - public
addMouseListener - public
addMouseMotionListener - public
addMouseWheelListener - public
bounds - public
checkImage - public
checkImage - public
createImage - public
createImage - public
createVolatileImage - public
createVolatileImage - public
enableInputMethods - public
getColorModel - public
getComponentListeners - public
getComponentOrientation - public
getCursor - public
getDropTarget - public
getFocusListeners - public
getFocusTraversalKeysEnabled - public
getHierarchyBoundsListeners - public
getHierarchyListeners - public
getIgnoreRepaint - public
getInputContext - public
getInputMethodListeners - public
getInputMethodRequests - public
getKeyListeners - public
getLocale - public
getLocationOnScreen - public
getMouseListeners - public
getMouseMotionListeners - public
getMouseWheelListeners - public
getToolkit - public
gotFocus - public
hasFocus - public
inside - public
isBackgroundSet - public
isCursorSet - public
isFocusTraversable - public
isFontSet - public
isForegroundSet - public
keyDown - public
keyUp - public
lostFocus - public
mouseDown - public
mouseDrag - public
mouseEnter - public
mouseExit - public
mouseMove - public
mouseUp - public
move - public
paintAll - public
prepareImage - public
prepareImage - public
removeComponentListener - public
removeFocusListener - public
removeHierarchyBoundsListener - public
removeHierarchyListener - public
removeInputMethodListener - public
removeKeyListener - public
removeMouseListener - public
removeMouseMotionListener - public
removeMouseWheelListener - public
setComponentOrientation - public
setCursor - public
setDropTarget - public
setFocusTraversalKeysEnabled - public
setFocusable - public
setIgnoreRepaint - public
show - public
show - public
transferFocusUpCycle - public
wait - public final
wait - public final
wait - public final
equals - public
hashCode - public
getClass - public final
notify - public final
notifyAll - public final


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Exercícios Resolvidos de Java - Pesquisando um valor em uma matriz de int e retornando o índice no qual o mesmo foi encontrado

Quantidade de visualizações: 9381 vezes
Pergunta/Tarefa:

Escreva um programa Java GUI ou console que declara, constrói e inicializa uma matriz de 5 inteiros. Em seguida peça ao usuário para informar um valor inteiro e informe se o valor lido está contido na matriz. Se o valor for encontrado na matriz, retorne seu índice (lembre-se de que os índices dos elementos em uma matriz Java começam em 0). A declaração, construção e inicialização da matriz pode ser feita da seguinte forma:

// declara, constrói e inicializa uma matriz de 5 inteiros
int valores[] = {4, 21, 8, 120, 1};
Dica: Na resolução abaixo eu usei um objeto JOptionPane para ler o valor a ser pesquisado. Se preferir, use um objeto da classe Scanner para leitura.

Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

Este código completo faz parte do nosso E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas.
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book


Uma idéia na resolução deste exercício é inicializar a variável que guardará o índice do elemento pesquisado com o valor -1. Assim, se no final da pesquisa o valor ainda for -1, sabemos que o elemento não foi encontrado.


Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 40 usuários muito felizes estudando em nosso site.