Java ::: Coleções (Collections) ::: Set (Conjunto) |
Como usar objetos da interface Set do Java para representar a interseção (ou intersecção) de dois ou mais conjuntosQuantidade de visualizações: 5069 vezes |
|
Na teoria dos conjuntos, a interseção (português brasileiro) ou intersecção (português europeu) de dois ou mais conjuntos é o conjunto dos elementos que, simultaneamente, pertencem a dois ou mais destes conjuntos. Assim, seja A = {2, 5, 8, 19, 30} e B = {2, 3, 1, 30}. A interseção desses dois conjuntos é C = {2, 30}. Na programação Java podemos representar a interseção de dois conjuntos usando objetos da interface Set e qualquer uma de suas implementações. Para este exemplo vou usar a classe TreeSet, que permite a ordenação dos elementos. Veja o código:
package estudos;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Estudos{
public static void main(String[] args) {
// primeiro conjunto
Set<Integer> conjuntoA = new TreeSet<>();
conjuntoA.add(2);
conjuntoA.add(5);
conjuntoA.add(8);
conjuntoA.add(19);
conjuntoA.add(30);
// segundo conjunto
Set<Integer> conjuntoB = new TreeSet<>();
conjuntoB.add(2);
conjuntoB.add(3);
conjuntoB.add(1);
conjuntoB.add(30);
// vamos obter a interseção dos dois conjuntos
Set<Integer> conjuntoC = intersecao(conjuntoA, conjuntoB);
// vamos exibir os elementos no conjunto C
Iterator iterator = conjuntoC.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
// método genérico que permite obter a interseção de dois conjuntos
public static <T> Set<T> intersecao(Set<T> conjA, Set<T> conjB){
Set<T> conjC = new TreeSet<>();
// percorremos todos os elementos do conjunto A
for(T elemento: conjA){
// e verificamos se o elemento está contido no conjunto B
if(conjB.contains(elemento)){
conjC.add(elemento); // se estiver contido nós o adicionamos no conjunto C
}
}
return conjC; // e retornamos o conjunto C
}
}
Ao executarmos este código teremos o seguinte resultado: 2 30 |
Java ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como testar se um ponto está dentro de um círculo em Java - Desenvolvimento de Games com JavaQuantidade de visualizações: 1356 vezes |
|
Quando estamos trabalhando com computação gráfica, geometria e trigonometria ou desenvolvimento de jogos em Java, é comum precisarmos verificar se um determinado ponto (uma coordenada x, y) está contido dentro de um círculo. Para melhor entendimento, veja a imagem a seguir: ![]() Veja que temos um círculo com raio igual a 115 e com centro nas coordenadas (x = 205; y = 166). Temos também dois pontos. O ponto vermelho está nas coordenadas (x = 140; y = 90) e o ponto azul está nas coordenadas (x = 330; y = 500. Como podemos ver na imagem, o ponto vermelho está dentro do círculo, enquanto o ponto azul está fora. E nosso intenção nesta dica é escrever o código Java que permite fazer essa verificação. Tenha em mente que está técnica é muito útil para o teste de colisões no desenvolvimento de games. Veja o código completo para o exemplo:
package estudos;
// vamos declarar a classe Circulo
class Circulo{
double xc;
double yc;
double raio;
public Circulo(double xc, double yc, double raio){
this.xc = xc; // x do centro
this.yc = yc; // y do centro
this.raio = raio; // raio do círculo
}
}
// agora vamos declarar a classe Ponto
class Ponto{
double x;
double y;
public Ponto(double x, double y){
this.x = x; // coordenada x
this.y = y; // coordenada y
}
}
// classe principal da aplicação
public class Estudos{
public static void main(String[] args){
// vamos criar um objeto Circulo
Circulo c = new Circulo(205, 166, 115);
// vamos criar um objeto Ponto
Ponto p = new Ponto(140, 90);
// vamos verificar se o ponto está dentro do
// círculo
double dx = p.x - c.xc;
double dy = p.y - c.yc;
if((Math.pow(dx, 2) + Math.pow(dy, 2)) < Math.pow(c.raio, 2)){
System.out.println("O ponto está dentro do círculo");
}
else{
System.out.println("O ponto NÃO está dentro do círculo");
}
}
}
Ao executar este código Java nós teremos o seguinte resultado: O ponto está dentro do círculo. Experimente com círculos de raios e coordenadas centrais diferentes e também com pontos em várias coordenadas e veja como os resultados são interessantes. |
C# ::: Coleções (Collections) ::: ArrayList |
Como escrever um método C# que retorna uma ArrayListQuantidade de visualizações: 17648 vezes |
|
Estudantes C# ficam um pouco confusos quando solicitados a escrever funções que retornam objetos de classes. E essa confusão é maior ainda quando precisam retornar uma ArrayList, mais precisamente um objeto da classe ArrayList. Esta dica mostra como isso pode ser feito. Veja que temos um método que define, em sua assinatura, que o tipo de retorno não é void (sem retorno) mas sim um objeto da classe ArrayList. No corpo deste método temos a criação da ArrayList propriamente dita, a adição de cinco inteiros e finalmente o uso da palavra-chave return para retornar o ArrayList já preenchido ao chamador do método. Note que o método Main é responsável por efetuar uma chamada ao método, obter o ArrayList resultante e em seguida usar o laço foreach para exibir seus valores:
// método que retornará uma ArrayList
static ArrayList obterLista(){
// Cria o ArrayList
ArrayList lista = new ArrayList();
// Adiciona 5 inteiros
lista.Add(1);
lista.Add(2);
lista.Add(3);
lista.Add(4);
lista.Add(5);
// retorna o ArrayList preenchido
return lista;
}
static void Main(string[] args){
// obtém um ArrayList preenchido a partir do
// método obterLista
ArrayList mLista = obterLista();
// exibe os valores do ArrayList
foreach (int valor in mLista){
Console.Write("{0} ", valor);
}
// pausa o programa
Console.ReadKey();
}
|
Flutter ::: Material Library - Biblioteca Material ::: TextField |
Como usar a propriedade onChanged da classe TextField do Flutter para detectar mudança em seu conteúdo e exibí-lo como título da janelaQuantidade de visualizações: 2034 vezes |
|
A propriedade onChanged da classe TextField nos permite detectar quando o conteúdo da caixa de texto sofre alterações (quando o usuário digita mais conteúdo ou deleta o conteúdo já existente. Nesta dica eu mostro como tirar proveito dessa propriedade para atualizar o título da AppBar com o mesmo texto da caixa de texto à medida que o usuário digita.
import 'package:flutter/material.dart';
// método principal do Dart, que inicia a aplicação
void main() {
runApp(MeuApp());
}
class MeuApp extends StatelessWidget {
// Este widget é a raiz da aplicação Flutter
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Controle TextField',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: TelaInicial(),
);
}
}
// Vamos construir a view e retornar para a raiz da aplicação
class TelaInicial extends StatefulWidget {
TelaInicial({Key key}) : super(key: key);
@override
_TelaInicialState createState() => _TelaInicialState();
}
class _TelaInicialState extends State<TelaInicial> {
String tituloJanela = "Título da Janela";
@override
Widget build(BuildContext context) {
// vamos criar uma caixa de texto chamada nomeTxt
final nomeTxt = TextField(
decoration: InputDecoration(
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.0)),
hintText: 'Digite seu nome'
),
// Vamos detectar a mudança de conteúdo do TextField
onChanged: (String value) async {
// setState() força a atualização da janela
setState(() {
tituloJanela = value;
});
}
);
return Scaffold(
appBar: AppBar(
title: Text(tituloJanela),
),
body: Center(
child: Container(
child: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
children: <Widget>[
// a caixa de texto TextField vai aqui
nomeTxt,
],
),
),
),
),
);
}
}
|
Você também poderá gostar das dicas e truques de programação abaixo |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







