���ꂩ��v���O���~���O���w�K���������AJava�͓�����łƂ����Â炢�Ƃ������̂��߂�Java�v���O���~���O������A�ڂł��B�ŐV��Eclipse 3.4��Java 6���g���啝�ɏ��ʂ𑝂₵���A�A�ځuEclipse�ł͂��߂�v���O���~���O�v�̉����łƂȂ�܂�
�@����́A�u�W�F�l���b�N�X�iGenerics�j�v�ɂ��Đ������܂��B
�@Java�ł́A���ׂĂ��N���X��java.lang.Object�^����h�����Ă���̂ŁA�ǂ̃I�u�W�F�N�g��Object�^�Ƃ��Ĉ����A���鏈�������܂��܂ȃf�[�^�^�ɑ��ēK�p�ł��܂��B
�@�������A���̏ꍇ�͌^�ɂ��Ĉ��S�ł��邱�Ƃ�ۏ��邽�߂ɁA�����Ń`�F�b�N�R�[�h���L�q������L���X�g������K�v������܂��B����܂ł̘A�ڂł́Ajava.util.List�̂悤�ȁujava.util.Collection�v�C���^�[�t�F�C�X�����������A������u�R���N�V�����t���[�����[�N�v�𗘗p����ۂɂ́AObject�^�Ƃ��ăf�[�^��}�����A�f�[�^�����o�����Ƃ��́A�O��́u�����^�t������Ă���Java�̗����ɕK�C�́g�^�ϊ��h�v�ʼn�������u�_�E���L���X�g�v���s���Ȃǂ��Ă��܂����B
�@�W�F�l���b�N�X�𗝉����Ďg����悤�ɂȂ�ƁA�����������R�[�h���L�q���Ȃ��Ă��ςނ悤�ɂȂ�܂��B���ɕ֗��ȋ@�\�ł����A�^�ɂ��Ĉ��S�Ȃ܂܃R���N�V�����t���[�����[�N�𗘗p����ɂ͕K�{�̋@�\�ł�����A���Ўg�����Ȃ���悤�ɂȂ�܂��傤�B
�@Eclipse��Java�v���O���~���O���n�߂鏀�����܂��̕��́A�A�ڑ�1��́uEclipse 3.4�Œ��ȒPJava�v���O���~���O��b�����v�ŏ��������Ă����Ă��������B
�@�W�F�l���b�N�X�ɂ��ė������邽�߂ɁA�u�L���[�iQueue�A�҂��s��j�v�Ƃ������f�[�^�\�����������Ă݂܂��傤�B�L���[���g���ƁA���N�G�X�g���t�������ԂɎ��s����v���O�������ȒP�Ɏ����ł���悤�ɂȂ�܂��B�v���O���}�Ȃ�A���З������Ă��������m���ł��B
�@Web�T�[�r�X�̃v���b�g�t�H�[���ƂȂ�\�t�g�E�F�A�Ȃǂł́A�u���[�U�[�����p����Web�u���E�U����̃��N�G�X�g���t���āA�t�������Ԃɏ��������s�������X�|���X��Ԃ��v�Ƃ������������K�v�ł��B
�@�܂�GUI�v���O�����̃v���b�g�t�H�[���ƂȂ�\�t�g�E�F�A�ł́A���[�U�[����������}�E�X�C�x���g��L�[���̓C�x���g�����ԂɎt���āA�t�������ԂɎ��s����Ƃ������������K�v�ł��B�����������ꍇ�ɁA�L���[�����p�ł��܂��B
�@���̃f�[�^�\���ł́A�f�[�^�����邽�߂́uenqueue�v���\�b�h�ƁA�f�[�^�����o�����߂́udequeue�v���\�b�h�������܂��B�f�[�^���o�����ꂷ�郁�\�b�h�̖��O�́A�ق��̂��̂��t�����Ă��邱�Ƃ�����܂��B�Ⴆ�A�uinsert�v�uremove�v���g���邱�Ƃ�����܂����A�uadd�v�udelete�v���g���邱�Ƃ�����܂��B
�@�uqueue�v����ɂȂ��Ă��܂��܂����A�{�e�ł́uenqueue�v�udequeue�v���g�����Ƃɂ��܂��B
�@�܂��L���[�ł́A�����̃f�[�^��ێ��ł��܂��B�����̃f�[�^��ێ��ł���f�[�^�\���Ƃ��Ắu�z���v�Ȃǂ�����܂��B�z��́A�Y�������w�肷�邱�ƂŁA�l��ێ�����ꏊ��ǂ�����l�����o�������w��ł��܂������A�L���[�ł́A�������������Ƃ͂ł��܂���B�f�[�^����ꂽ���ɂ����f�[�^�����o�����Ƃ��ł��Ȃ�����K�v���Ȃ��̂ł��B
�@�g�������ǂ����邽�߂ɁA�u�L���[�ɒl�������Ă���̂��v�u�L���[�ɒl�����邱�Ƃ��ł��邩�v���m�F�ł���悤�ȃ��\�b�h���������邱�Ƃ�����܂��B
�@���̐}�ł́A�L���[�̓������̓I�Ɏ����Ă��܂��B
�@1��}������ƁA�L���[�ɂ�1������܂��B2�A3�Ə��ɑ}������ƁA���̏��Ƀf�[�^�̓L���[�ɓ���܂��B�g���o���h������ƁA�擪��1�����o���܂��B���̌��4��}������ƁA�Ō��4���lj�����܂��B���Ɏ��o����2����ƁA2�A3�����o���܂��B����́A�}���������ɂȂ��Ă��܂��B
�@����ł́A�u�ő�5�܂ŁA0�ȏ��int�^�̒l��ێ��ł���A�L���[���g�����v���O�����v�ɂ��čl���Ă݂܂��傤�B
�@�N���X�uQueue�v�̓L���[�\����\���Ă��܂��B�t�B�[���h�Ƃ��ẮA�L���[�ɂǂꂾ���̗v�f����ۑ��ł��邩��\���萔�uSIZE�v�A�l�����邽�߂̔z��uvalues�v�A�擪�ɂ���f�[�^�̈ʒu��\���ϐ��uhead�v�A�����ɂ���f�[�^�̈ʒu��\���ϐ��utail�v��p�ӂ��܂��B
�@���\�b�h�Ƃ��Ắuenqueue�v�udequeue�v��p�ӂ��܂��B�L���[���ǂ����ׂ�uisEmpty�v���\�b�h���p�ӂ��܂��B
�@�f�[�^������ۂɂ́A�p�ӂ��Ă���values�֏��Ԃɓ���Ă��������̂ŁA�P���ɍl����ƁA���̂悤�ȃR�[�h�ɂȂ�܂��B
boolean enqueue(int data) { if (data < 0) return false; if (tail > SIZE) { return false; } values[tail++] = data; tail = tail % values.length; return true; }
�@data��0�ȏ�̒l�Ȃ̂ŁA������`�F�b�N���܂��B���ɁA�������w���Ă���tail���g���āA�u�z��ցA����ȏ�f�[�^�������邩�ǂ����v�肵�܂��B������Ȃ��Ȃ�false�A�������Ȃ�true��Ԃ��悤�ɂ��܂��B�f�[�^��������ꍇ�́A�uvalues[tail]�v�֒l�����āAtail��1�������܂��B1�s�ŕ\�����߂Ɂuvalues[tail++] = data;�v�Ƃ��܂��B
�@�f�[�^�����o�����\�b�h�ɂ��čl���Ă݂܂��傤�B��قǂ�enqueue���\�b�h�ƑΉ����čl����Ȃ�A���̂悤�ȃR�[�h�ɂȂ�܂��B
int dequeue() { int data = -1; if (tail != head) { data = values[head++]; } return data; }
�@�L���[�Ƀf�[�^���Ȃ��ꍇ�́Ahead��tail�̈ʒu����v���Ă���̂ŁA���̏ꍇ�́u-1�v��Ԃ��܂��B�����łȂ��ꍇ�́Ahead���擪���w���Ă���킯�ł�����Avalues[head]����l�����o���Ahead��1�������܂��B�����āA���o�����l��Ԃ��܂��B���̂悤�ɂ��邱�ƂŁA���p���鑤�ł́u-1�v���Ԃ��ė�����A�L���[�Ƀf�[�^���Ȃ��Ɣ���ł��܂��B
�@�L���[���ǂ�����Ԃ�isEmpty���\�b�h�̓L���[�Ƀf�[�^���Ȃ��ꍇ�́Ahead��tail�̈ʒu����v���܂�����A���̂悤�ɂȂ�܂��B
boolean isEmpty() { return (tail == head); }
�@�ȏオ��{�ł����A���̂܂܂ł͔z��̍Ō�̗v�f�Ƀf�[�^����ꂽ��A����ȏ�g���Ȃ��Ȃ��Ă��܂��܂��B�����ŁA�z��̐擪�̗v�f�ɂ���f�[�^�����o����Ă���ꍇ�́A���̗̈�͍ė��p�ł��܂��B�ł�����A���������ɗ��p���邱�Ƃ��l���Ă݂܂��傤�B
�@����ƁA���̂悤�ȃR�[�h�ɂȂ�܂��B�����ł́AQueue�N���X�𗘗p����T���v����main���\�b�h�Ƃ��Ď������Ă��܂��B
package sample19; public class Sample01 { static class Queue { final int SIZE = 5; private int[] values = new int[SIZE+1]; private int head = 0; private int tail = 0; boolean enqueue(int data) { if (data < 0) return false; if (((tail + 1) % values.length) == head) { return false; } values[tail++] = data; tail = tail % values.length; return true; } int dequeue() { int data = -1; if (tail != head) { data = values[head++]; head = head % values.length; } return data; } boolean isEmpty() { return (tail == head); } } public static void main(String[] args) { Queue q = new Queue(); q.enqueue(1); q.enqueue(2); q.enqueue(3); q.enqueue(4); q.enqueue(5); q.enqueue(6); // �e�ʃI�[�o�[ System.out.println(q.dequeue()); // 1 q.enqueue(7); // ������̂Ńf�[�^�ێ� while (!q.isEmpty()) { int data = q.dequeue(); System.out.print(data+","); } // �� 2,3,4,5,7, �o�� System.out.println(""); } }
�@���̃v���O�����ł́A��]���v�Z���邽�߂̉��Z�q�u%�v�����܂����p���Ă��܂��Bhead��tail���z��̗v�f������l�ƂȂ�ꍇ�́A0�ɖ߂�悤�Ɍv�Z�����Ă��܂��B�z��Ȃ̂����肷�鏈���͕ς��Ă��܂��A�ő�e�ʂɒB���Ă��邩�ǂ����肷�邽�߂̏����́u((tail + 1) % values.length) != head�v�Ƃ��Ă��܂��B
�@�L���[����̏ꍇ�ƍő�e�ʂɒB���Ă���ꍇ�Ƃ̋�ʂ��ł���悤�ɁA�z��̗v�f���́A�L���[�ŕۑ��ł���l�̍ő�l����1�傫�����Ă���܂��B�����l�ɂ��Ă��܂��ƁA�����̋�ʂ��t���Ȃ��Ȃ�܂��B
�@���̃L���[�̓�����m�F���邽�߂ɁAmain���\�b�h�ł́A�u1�v����u7�v�܂ŏ��ԂɃf�[�^���L���[�֓���Ă��܂��B�������A�r���́u6�v����ꂽ�Ƃ��ɗe�ʃI�[�o�[�ƂȂ�̂ŁA��x�����L���[����f�[�^�����o���Ă��܂��B���̂Ƃ��擪�́u1�v�����o����܂��B���ꂩ��A�u7�v�����Ă��܂��B�Ō�ɁA�L���[����ɂȂ�܂Ńf�[�^�����o���Ă��܂��B
�@���ۂ̎��s���ʂ͎��̂Ƃ���ł��B�z��ǂ���6�͓���܂���B�ق��̒l�͑}���������Ԃǂ���Ɏ��o���Ă��܂��B
1 2,3,4,5,7,
�@���āA�L���[�ɂ��Ă̐����͈ȏ�ł����A���̃f�[�^�\���ɂ��ė����ł����ł��傤���B�L���[�̗����ɂ��Ă͂��܂蕪����Ȃ�������������܂��A�����ł́A�u�����������f�[�^�\�����悭�g�����ʂ�����v�Ƃ������Ƃ����o���Ă��������ł��傤�B
�@���y�[�W����́A�L���[�\���̃R�[�h��3�i�K�ʼn������āA�W�F�l���b�N�X����������ƁA�������m���ɗ������Ă����܂��B
Copyright © ITmedia, Inc. All Rights Reserved.