Разница между ArrayList и векторных

  1. Arraylist is not synchronized while vector is.
  2. Arraylist has no default size while vector has a default size of 10.
  3. Arraylist don't define any increment size while vector does.
  4. Arraylist can be seen directly without any iterator while vector requires
    an iterator to display all it's content. (not very sure).

Что представляет собой пакет метода

Пакет метода можно назвать любого класса в рамках своего пакета.

Это уровень доступа по умолчанию, если нет доступа уровня явно объявлены. Другие варианты для объявления видимости частных, общественных и защищен.

PackageMethod () метод является частным методом в следующий класс:


public class MyClass {



    private void privateMethod() {

        System.out.println("I am private method");

    }



    void packageMethod() { 

        System.out.println("I am package method");

    }



    protected void protectedMethod() {

        System.out.println("I am protected method");

    }



    public void publicMethod() {

        System.out.println("I am public method");

    }

Преобразование вращения перевода



java.awt.geom



import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.RenderingHints;

import java.awt.Shape;

import java.awt.Stroke;

import java.awt.geom.AffineTransform;

import java.awt.geom.GeneralPath;

import java.awt.geom.Rectangle2D;



import javax.swing.JComponent;

import javax.swing.JFrame;



public class TransformersRotationTranslation extends JComponent {

  Shape axes, shape;



  int length = 54, arrowLength = 4, tickSize = 4;



  public TransformersRotationTranslation() {

    axes = createAxes();

    shape = createShape();

  }



  protected Shape createAxes() {

    GeneralPath path = new GeneralPath();



    // Axes.

    path.moveTo(-length, 0);

    path.lineTo(length, 0);

    path.moveTo(0, -length);

    path.lineTo(0, length);

    // Arrows.

    path.moveTo(length - arrowLength, -arrowLength);

    path.lineTo(length, 0);

    path.lineTo(length - arrowLength, arrowLength);

    path.moveTo(-arrowLength, length - arrowLength);

    path.lineTo(0, length);

    path.lineTo(arrowLength, length - arrowLength);

    // Half-centimeter tick marks

    float cm = 72 2.54f;

    float lengthCentimeter = length / cm;

    for (float i = 0.5f; i < lengthCentimeter; i += 1.0f) {

      float tick = i * cm;

      path.moveTo(tick, -tickSize / 2);

      path.lineTo(tick, tickSize / 2);

      path.moveTo(-tick, -tickSize / 2);

      path.lineTo(-tick, tickSize / 2);

      path.moveTo(-tickSize / 2, tick);

      path.lineTo(tickSize / 2, tick);

      path.moveTo(-tickSize / 2, -tick);

      path.lineTo(tickSize / 2, -tick);

    }

    // Full-centimeter tick marks

    for (float i = 1.0f; i < lengthCentimeter; i += 1.0f) {

      float tick = i * cm;

      path.moveTo(tick, -tickSize);

      path.lineTo(tick, tickSize);

      path.moveTo(-tick, -tickSize);

      path.lineTo(-tick, tickSize);

      path.moveTo(-tickSize, tick);

      path.lineTo(tickSize, tick);

      path.moveTo(-tickSize, -tick);

      path.lineTo(tickSize, -tick);

    }

    return path;

  }



  protected Shape createShape() {

    float cm = 72 2.54f;

    return new Rectangle2D.Float(cm, cm, * cm, cm);

  }



  public void paint(Graphics g) {

    Graphics2D g2 = (Graphics2Dg;



    // Use antialiasing.

    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

        RenderingHints.VALUE_ANTIALIAS_ON);



    // Move the origin to 75, 75.

    AffineTransform at = AffineTransform.getTranslateInstance(7575);

    g2.transform(at);



    // Draw the shapes in their original locations.

    g2.setPaint(Color.black);

    g2.draw(axes);

    g2.draw(shape);



    // Transform the Graphics2D.

      AffineTransform rat = new AffineTransform();

      rat.setToRotation(Math.PI / 6);

      rat.translate(100100);

    g2.transform(rat);



    // Draw the "new" shapes in dashed.

    Stroke stroke = new BasicStroke(1, BasicStroke.CAP_BUTT,

        BasicStroke.JOIN_BEVEL, 0new float[] { 3}0);

    g2.setStroke(stroke);

    g2.draw(axes);

    g2.draw(shape);

  }



  public static void main(String[] a) {

    JFrame f = new JFrame();

    f.getContentPane().add(new TransformersRotationTranslation());

    f.setSize(350450);

    f.show();

  }

}

Наблюдатель модель

Как Singleton тенденция, которая была освещена в первой половине этого отзыва, шаблон наблюдатель популярный шаблон проектирования, используемых в программах Java. Шаблон является поведенческой модели дизайна. Он определяет путь к классам для слабо связанных и для одного класса (или много), чтобы получать уведомления при обновлении другого. В основном это означает, что когда-то происходит в одном месте, вы сообщите, кто наблюдает, и что заинтересованы в этом одном месте.

Есть два способа смотреть на модель наблюдателя. Первый способ связан с наблюдателем и наблюдаемой классы найдены в пакете java.util. Второй способ следует модели JavaBeans компонент регистрации событий слушателей с компонентами.

До создания модели JavaBeans случае, наблюдателем и наблюдаемой описаны классы реализации наблюдаемых модели. Иными словами, классы были примерно с версии 1.0 платформы Java. Существует ничего технически ошибочна с классами, и они по-прежнему присутствуют в библиотеках. Классы еще могут быть использованы для реализации наблюдаемых модели, а вторая модель, модель JavaBeans компонента, как правило, используется. Одним из важных проблем в использовании классы для реализации наблюдаемых модели является то, что нужно продлить наблюдаемым. Это заставляет структуры иерархия классов, которые не могут быть видны в одно-наследства Мир платформы Java.

Модель JavaBeans компонент регистрации слушателей событий включает в себя ряд добавлять и удалять методами, где слушателю тип вкладывается в название метода. Например, чтобы наблюдать за выбором кнопки, вы регистрируете ActionListener с компонентами:


   ActionListener listener = new ActionListener() {

      public void actionPerformed(ActionEvent actionEvent) {

          ...

      }

   }

   JButton button = new JButton("Pick Me");

   button.addActionListener(listener);

Это действительно все, что с моделью наблюдатель в системе классов. Вы реализуете интерфейса слушателя, приложите ее к вопросу о наблюдении, и ждать. "Тема", что наблюдается. Он отвечает за память, который ведет наблюдение. В случае модели компонентов JavaBeans, интерфейс для подключения и отключения наблюдателя объектов Добавить / удалить слушателю имена шаблону. Когда государство изменений тем, он уведомляет наблюдателя объектов.

Одна из основных целей шаблон для того, чтобы свободно связи субъекта и наблюдателя. При выборе JButton, вместо вызова конкретного метода фиктивных подкласса им ButtonNotification, уведомление из отведенной в интерфейсе, что каждый может реализовать. JButton не волнует то, что класс придает наблюдателя (слушателя) есть. В самом деле, кнопки не заботит, если изменены реализации класса. Все, что заботится о том, что наблюдатель реализующий слушателю.

Есть целый ряд осложнений, нужно остерегаться при использовании шаблона наблюдателя. Во-первых, возможность утечки памяти. Ссылкой на наблюдателей ведется по этому вопросу. Пока объект релизы ссылка, что наблюдатель не может быть удален сборщиком мусора. Знать об этой возможности и удалить наблюдателя в соответствующих случаях. Также отметим, что на множестве объектов, наблюдатель ведется в неупорядоченные коллекции - во всяком случае, когда регистрация слушателей. Вам не обязательно знать, если первый зарегистрированный слушатель получает уведомление первый или последний. Если вам необходимо иметь каскадный уведомления, где объект должен быть уведомлен первой, после чего объект B, вы должны ввести объект посредник для обеспечения упорядоченности. Просто регистрация наблюдателей в определенном порядке, не будет проводить в жизнь их порядок уведомления.

Еще одна область платформы Java, что модели модель наблюдатель Java Message Service (JMS), с ее гарантированной доставки, не местного распределения, и настойчивость, чтобы назвать некоторые из ее преимуществ. JMS публикации-подписки сообщениями модель позволяет любому количеству абонентов прислушиваться к тем, представляющих интерес. При изготовлении сообщение опубликовано теме, уведомляются все связанные абонентов.

Есть много других мест на платформе Java, что модель модель наблюдателя - модель часто используется по всей платформе Java.

С 1995 года публикация шаблонов дизайна книги банда четырех, остальные книги были опубликованы, которые предлагают различные точки зрения по той же модели и ввести дополнительные шаблоны. Два из наиболее популярных названий являются:

Другие книги, такие как шаблоны предприятия архитектуры приложения доступны для тех, кто заинтересован в более целенаправленный охват шаблон дизайна - в данном случае, для корпоративных приложений.

За дополнительной информацией о шаблонах проектирования в общем, увидеть ее вступления Википедии.

Этот вопрос Tech Tips посвящен памяти Джона Vlissides, одна из первоначальных Банда четырех авторов. Он скончался ноября 2005 года.

Copyright (C) 2004-2005 Sun Microsystems, Inc
Все права защищены.

Как создать виртуальный рабочий стол в Вашей Applic

JDesktopPane

Этот совет Java Swing иллюстрирует способ использования фона вашего приложения в качестве виртуального рабочего стола. Этот код использует JDesktopPane которая представляет собой контейнер (обычно для JInternalFrames), который имитирует рабочий стол. Как правило, пользователю будет создавать JInternalFrames и поместите их в JDesktopPane. Затем пользователь может взаимодействовать с JInternalFrames как обычно они бы с JFrames. Действия (свернуть, развернуть, закрывать и т.д.) осуществляются с помощью DesktopManager, что связано с JDesktopPane.


import javax.swing.*;

import java.awt.event.*;

import java.awt.*;



public class DesktopTest extends JFrame {

   public DesktopTest()

   {

      super"Using a JDesktopPane" );



      JMenuBar bar = new JMenuBar();

      JMenu addMenu = new JMenu"Add" );

      JMenuItem newFrame = new JMenuItem"Internal Frame" );

      addMenu.addnewFrame );      

      bar.addaddMenu );

      setJMenuBarbar );      



      final JDesktopPane theDesktop = new JDesktopPane();

      getContentPane().addtheDesktop );

    

      newFrame.addActionListener(

         new ActionListener() {

            public void actionPerformedActionEvent e ) {

               JInternalFrame frame =

                  new JInternalFrame(

                     "Internal Frame",

                     true, true, true, true );



               Container c = frame.getContentPane();

               MyJPanel panel = new MyJPanel();



               c.addpanel, BorderLayout.CENTER );

               frame.setSize(

                  panel.getImageWidthHeight().width,

                  panel.getImageWidthHeight().height );

               frame.setOpaquetrue );

               theDesktop.addframe );

            }

         }

      );



      setSize500400 );

      show();

   }



   public static void mainString args[] )

   {     

      DesktopTest app = new DesktopTest();



      app.addWindowListener(

         new WindowAdapter() {

            public void windowClosingWindowEvent e )

            {

               System.exit);

            }

         }

      );

   }

}



class MyJPanel extends JPanel {

    private ImageIcon imgIcon;



    public MyJPanel()

    {

       imgIcon = new ImageIcon"java-tip.gif" );

    }



    public void paintComponentGraphics g )

    {

       imgIcon.paintIconthis, g, 0);

    }



    public Dimension getImageWidthHeight()

    {

       return new DimensionimgIcon.getIconWidth(),

                             imgIcon.getIconHeight() );  

    }

}

Как сжать файл в формат GZIP

Этот совет Java иллюстрирует метод сжатия файла в формате GZIP. Gunzip это универсальный формат, используемый многими приложениями для сжатия своих файлов.


    try {

        // Create the GZIP output stream

        String outFilename = "outfile.gzip";

        GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(outFilename));

    

        // Open the input file

        String inFilename = "infilename";

        FileInputStream in = new FileInputStream(inFilename);

    

        // Transfer bytes from the input file to the GZIP output stream

        byte[] buf = new byte[1024];

        int len;

        while ((len = in.read(buf)) 0) {

            out.write(buf, 0, len);

        }

        in.close();

    

        // Complete the GZIP file

        out.finish();

        out.close();

    catch (IOException e) {

    }

Что такое мусор

В программировании, вывоз мусора (также известной как ГК) является одной из форм автоматического управления памятью. Сборщиком мусора или собирателя попытках вернуть память, используемая объекты, которые никогда не будут обращаться снова с применением или мутатора. Вывоз мусора была изобретена Джон Маккарти около 1959 для решения проблем ручного управления памятью в его недавно разработал язык программирования Lisp.

Много Языки компьютером требует сбора мусора, либо как часть спецификации языка (например, Java, C #, Дилан) или эффективно для практического применения (например, официально Языки, как лямбда-исчисления), и они, как говорят, сбор мусора в Языки. Другое Языки были разработаны для использования с ручным управлением памятью, но мусора реализаций (например, C, C). В любом случае, это гораздо легче осуществлять сбор мусора в качестве части компилятора языка и времени автономной работы системы, но постфактум GC существуют системы, в том числе те, которые не требуют перекомпиляции. Сборщика мусора почти всегда будет тесно интегрирована с распределителя памяти.

Как из одного апплета запустить другой апплет?

Этот механизм может использоваться для первоначальной загрузки маленького апплета с коротким временем загрузки,
показом пользователю сообщения и дальнейшей загрузкой большего апплета. Пример ниже показывает, как это сделать:



[HTML (testQuick.html)



<HTML><HEAD></HEAD><BODY>

<APPLET CODE="QLoader.class" 

        NAME="QLoader"

        HEIGHT=200 

        WIDTH=200>

<PARAM NAME="appletToLoad" VALUE="SecondApplet">

<PARAM NAME="SecondAppletParm" VALUE="Hello World">

</APPLET></BODY></HTML>



[JAVA source (QLoader.java)]



import java.applet.Applet;

import java.applet.AppletStub;

import java.awt.*;



public class QLoader extends Applet 

    implements Runnable, AppletStub {

  String appletToLoad;

  Thread appletThread;



  public void init() {

    appletToLoad = getParameter("appletToLoad");

    setBackground(Color.white);

    }



  public void paint(Graphics g) {

    g.drawString("Loading the BIG ONE ..."3030);

    



  public void run() {

    try {

      Class appletClass = Class.forName(appletToLoad);

      Applet realApplet = (Applet)appletClass.newInstance();

      realApplet.setStub(this);

      setLayoutnew GridLayout(1,0));

      add(realApplet);

      realApplet.init();

      realApplet.start();

      }

    catch (Exception e) {

      System.out.println);

      }

    validate();

    }



  public void start(){

    appletThread = new Thread(this);

    appletThread.start();

    }



  public void stop() {

    appletThread.stop();

    appletThread = null;

    }



  public void appletResizeint width, int height ){

    resizewidth, height );

    }

}



[SecondApplet.java for demonstration]



import java.awt.*;



  public class SecondApplet extends java.applet.Applet {

    TextField tf;

    public void init() {

      System.out.println("Starting Second applet");

      String s;

      tf = new TextField10 );

      addtf );

      s = getParameter("SecondAppletParm");

      tf.setText(s);

      }

    }

Значение использования restricions

Некоторые примитивные значения, кроме бетона данного типа могут иметь заранее определенный набор ценностей. И значения могут быть установлены только для одного этого варианта, как и перечислений. XML-схема позволяет ограничить стоимость данного типа набора перечисленными ценностями. С другой стороны, мы можем ограничить некоторое значение, определяя свои мин / макс пределах:


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">



  <xs:element name="purchase-order">

  ...

////////////// order number should be an integer in range (0;1000):

    <xs:attribute name="number" use="required">

    <xs:simpleType>

      <xs:restriction base="xs:integer">

        <xs:maxExclusive value="1000"/>

        <xs:minExclusive value="0"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:attribute>



              <xs:element name="item" maxOccurs="unbounded">

    ...

//////////////  our item-type may be either CD or DVD:



                  <xs:attribute name="type">

                    <xs:simpleType>

                      <xs:restriction base="xs:string">

                        <xs:enumeration value="CD"/>

                        <xs:enumeration value="DVD"/>

                      </xs:restriction>

                    </xs:simpleType>

                  </xs:attribute>

    ...

                </xs:complexType>

    ...

              </xs:element>

  ...

  </xs:element>

</xs:schema>

Нахождение наибольшего общего делителя рекурсивный

В математике, наибольшего общего делителя (НОД), которые иногда называют наибольший общий множитель (ГРС) или высокий общий фактор (ЛПУ), двух ненулевых целых чисел, является крупнейшим положительное целое число, которое делит оба номера.

Наибольший общий делитель и B записывается как НОД (A, B), а иногда и просто как (A, B). Например, НОД (12, 18) \u003d 6, НОД (

Приведенный ниже код показывает, как реализовать НОД функция рекурсивно.


/**

 * Return the greatest common divisor

 */

 

 public static long gcd(long a, long b) {

 

   if (b==0

     return a;

   else

     return gcd(b, a % b);

 

Страница 1 из 512345»