Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: Java ::: Coleções (Collections) ::: Set (Conjunto)

Java Collections - Como usar a interface Set em seus códigos Java

Quantidade de visualizações: 4722 vezes
A interface Set estende a interface Collection mas não adiciona novos métodos ou constantes. Em vez disso, esta interface define que uma instância de Set não contenha elementos duplicados. Esta responsabilidade é transferida para as classes que implementam a interface.

A classe abstrata AbstractSet é uma classe de conveniência que herda da classe também abstrata AbstractCollection e implementa a interface Set. A classe AbstractSet fornece implementações concretas para os métodos equals() e hashCode(). Estes métodos permitem a funcionalidade da não permissão de elementos duplicados nos conjuntos.

As classes concretas mais conhecidas da interface Set são:

HashSet - Esta classe é implementada em cima de uma tabela hash, ou seja, um array (matriz) na qual os elementos são armazenados em posições calculadas de acordo com o seu conteúdo. Uma característica interessante de HashSet é que os elementos raramente são retornados na mesma ordem na qual foram inseridos.

LinkedHashSet - Esta classe estende a classe HashSet com uma implementação de lista ligada (linked list) que permite a ordenação dos elementos no conjunto.

TreeSet - Esta classe é uma classe concreta que implementa a interface SortedSet. A interface SortedSet é uma sub-interface de Set que garante que os elementos no conjunto estejam ordenados. Além disso, esta interface fornece os métodos first() e last() para acessar o primeiro e o último elemento do conjunto. Há ainda os métodos headSet(toElement) e tailSet(fromElement) para retornar uma faixa do conjunto cujos elementos sejam "menores" que toElement e "maiores" que fromElement.

Seja qual for a implementação de Set que você queira usar, é sempre uma boa idéia codificar em cima da interface. Isso facilita a troca de HashSet por TreeSet ou vice-versa sem grandes modificações no seu código.

Veja um exemplo no qual usamos a classe concreta HashSet para representar um conjunto de cinco strings únicas:

package estudos;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Estudos{
  public static void main(String[] args) {
    // vamos criar uma instância da classe HashSet
    Set<String> conjunto = new HashSet<>();
    
    // vamos inserir cinco elementos no Set
    conjunto.add("Açucar");
......


Ao executar este trecho de código teremos um resultado parecido com:

Macarrão
Feijão
Carne
......


Note que raramente os elementos serão exibidos na ordem na qual eles foram inseridos. Experimente agora trocar a linha:

Set<String> conjunto = new HashSet<>();

por

Set<String> conjunto = new LinkedHashSet<>();

Execute o código novamente e verá que agora os elementos são exibidos na mesma ordem que foram inseridos.

Link para compartilhar na Internet ou com seus amigos:

C# ::: Dicas & Truques ::: Strings e Caracteres

Como retornar o índice da primeira ocorrência de um caractere em uma string C# usando o método IndexOf() da classe String

Quantidade de visualizações: 8239 vezes
Em alguma ocasião nós precisaremos verificar se um determinado caractere está contido em uma palavra, frase ou texto, e poderemos querer também retornar o índice da primeira ocorrência de tal caractere.

Para isso nós podemos usar a função IndexOf() da classe String. Este método recebe o caractere ou substring desejada e retorna um valor inteiro indicando o índice da primeira ocorrência. Se o caractere não for encontrado, o valor -1 é retornado.

Veja o código completo para o exemplo:

using System;

namespace Estudos {
  class Program {
    static void Main(string[] args) {
      string frase = "Gosto de Java e C#";

      // vamos obter o índice da primeira ocorrência da letra "J"
      int pos = frase.IndexOf("J");

      // o caractere for encontrado?
      if (pos != -1) {
......


Ao executar este código C# nós teremos o seguinte resultado:

O caractere foi encontrado na posição 9

Tenha em mente que o método IndexOf() da classe String do C# diferencia letras maiúsculas de letras minúsculas.


C++ Builder ::: VCL - Visual Component Library ::: TEdit

Como definir o conteúdo de um TEdit em tempo de execução usando a função SendMessage() da API do Windows e a mensagem WM_SETTEXT usando C++ Builder

Quantidade de visualizações: 5602 vezes
Embora o C++ Builder já nos forneça as ferramentas necessárias para definir o conteúdo de um TEdit em tempo de execução, é importante saber como realizar esta tarefa usando a API do Windows. Para isso, podemos usar a função SendMessage() em combinação com a mensagem WM_SETTEXT.

A função SendMessage() da API do Windows possui a seguinte assinatura:

LRESULT SendMessage(          
  HWND hWnd,
  UINT Msg,
......


Note que precisamos de um HWND (Handle) para a caixa de texto. Feito isso só precisamos enviar a mensagem WM_SETTEXT juntamente com o conteúdo a ser exibido no controle. Veja:

void __fastcall TForm3::Button2Click(TObject *Sender)
{
  // conteúdo a ser definido para a caixa de texto
  char texto[] = "Veja isso";

......


Veja que o parâmetro wParam da função SendMessage não é usado quando a mensagem é WM_SETTEXT.


PHP ::: Fundamentos da Linguagem ::: Tipos de Dados

Entendendo o tipo de dados NULL do PHP - Aprenda a usar o tipo de dados NULL da linguagem PHP - Atualizada

Quantidade de visualizações: 10579 vezes
O tipo de dados NULL (nulo) do PHP é semelhante aos tipos undef (Perl) e None (Python). Este tipo de dados possui apenas um valor que é usado para indicar que uma variável não possui nenhum valor (não recebeu nenhuma atribuição ainda). Este tipo de dados pode ser escrito NULL, Null, null, etc. Não há distinção de maiúsculas e minúsculas. Veja um exemplo de seu uso:

$nome = "Osmar J. Silva";
$nome = null;  // variável é NULL agora
......


Se quisermos testar se uma variável ainda é NULL, podemos usar a função is_null(). Veja:

<?
  $nome;
 
  if(is_null($nome)){
......


Este código mostrará o seguinte resultado:

A variável $nome ainda é NULL.

Note que, se as advertências estiverem habilitadas na página PHP, a seguinte mensagem será exibida:

Warning: Undefined variable $nome in ...\index.php on line 4

Esta é a forma da linguagem PHP nos advertir de que a variável foi declarada mas não foi inicializada com algum valor.

Esta dica foi revisada, atualizada e testada no PHP 8.


C# ::: Windows Forms ::: TextBox

C# Windows Forms Avançado - Como rolar as linhas de um TextBox para o topo (parte superior) usando a API do Windows

Quantidade de visualizações: 6767 vezes
Em algumas situações gostaríamos de rolar para cima o conteúdo de um TextBox de múltiplas. Para isso podemos usar a API do Windows, mais especificamente a mensagem WM_VSCROLL com o valor SB_TOP para seu parâmetro wParam. O valor do parâmetro lParam é zero.

Veja um trecho de código que rola para cima o conteúdo de um TextBox. Antes de executar este exemplo, tenha a certeza de ter um TextBox de múltiplas, com barras de rolagem e conteúdo que force o aparecimento das barras de rolagem.

Comece adicionando a linha:

using System.Runtime.InteropServices;
......


na seção de usings do seu formulário ou classe. Em seguida adicione o trecho de código abaixo no corpo da classe, como um método:

[DllImport("user32.dll", EntryPoint = "SendMessage", 
  CharSet = CharSet.Auto, SetLastError = true)]
......


Finalmente coloque o código abaixo no evento Click de um botão:

private void button2_Click(object sender, EventArgs e){
  // antes de executar este exemplo certifique-se de que
  // a propriedade Multiline do TextBox esteja definida
  // como true e a propriedade ScrollBars contenha o valor
  // Vertical ou Both
  textBox1.Multiline = true;
  textBox1.ScrollBars = ScrollBars.Vertical;
    
  // constante para a mensagem WM_VSCROLL
  const uint WM_VSCROLL = 0x115;
......



JavaScript ::: Dicas & Truques ::: Data e Hora

Como retornar os milisegundos da data atual desde a meia-noite de 01/01/1970 em JavaScript usando as funções valueOf() e getTime() do objeto Date

Quantidade de visualizações: 6669 vezes
Os métodos valueOf() e getTime() do objeto Date podem ser usados quando precisamos obter os milisegundos da data atual desde a meia-noite do dia 1º de janeiro de 1970. Veja um exemplo:

<html>
<head>
<title>Estudos JavaScript</title>
</head>
<body>

<script type="text/javascript">
  // vamos obter a data e hora atual
  var agora = new Date();

  // vamos exibir a data e hora atual
  document.write("A data e atual é: " + agora);

  // milisegundos desde a meia-noite de 1º de janeiro de 1970
......


Ao executar este códigos teremos um resultado parecido com:

A data e atual é: Sun Mar 27 2011 20:28:04 GMT-0300 (Hora oficial do Brasil)
Milisegundos desde a meia-noite de 01/01/1970: 1301268484174
......


Esta dica foi escrita e testada no Internet Explorer 8 e Firefox 3.6.


Desafios, Exercícios e Algoritmos Resolvidos de JavaScript

Veja mais Dicas e truques de JavaScript

Dicas e truques de outras linguagens

Quem Somos

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..

Linguagens Mais Populares

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



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