javaでのループの移り変わり(とrubyとの比較)

今さらjava5の機能(generics、拡張forループ、printf)を使ってみました。


Loop.java

import java.util.ArrayList;
import java.util.Iterator;
import static java.lang.System.*;
public class Loop {
/*
*   Rubyスタイル
*   def loop(users)
*     users.each do |user|
*       puts "User: #{user.id} , #{user.name}"
*     end
*   end
*/
// java5
public void java5(ArrayList<User> users) {
for(User user : users) {
out.printf("User: %s  %s%n" , user.getId() ,user.getName());
}
}
// java1.4
public void java1_4(ArrayList users) {
Iterator it = users.iterator();
while(it.hasNext()) {
User user = (User)it.next();
System.out.println("User: " + user.getId() + "  " + user.getName());
}
}
// C っぽい
public void c_style(ArrayList users) {
for(int i=0; i< users.size(); i++) { // ArrayListのサイズを超える恐れあり
User user = (User)users.get(i);
System.out.println("User: " + user.getId() + "  " + user.getName());
}
}
}

Main.java

import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Main main = new Main();
main.exec();
}
public void exec(){
Loop loop = new Loop();
ArrayList<User> ary = new ArrayList<User>();
User a = new User();
User b = new User();
User c = new User();
User d = new User();
a.setId(1);
b.setId(2);
c.setId(3);
d.setId(4);
a.setName("Sato");
b.setName("Kimura");
c.setName("Tanaka");
d.setName("Suzuki");
ary.add(a);
ary.add(b);
ary.add(c);
ary.add(d);
loop.java5(ary);
loop.java1_4(ary);
loop.c_style(ary);
}
}

User.java

public class User {
private int id;
private String name;
private String description;
public String getDescription() { return description; }
public void setDescription(String description) { this.description = description; }
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}

Did you enjoy this post? Why not leave a comment below and continue the conversation, or subscribe to my feed and get articles like this delivered automatically to your feed reader.

Comments

コメントはまだありません。

コメントする

(必須)

(必須)