import java.util.List;
public class GenericSwapExample {
// ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ swapElements
public static <T> void swapElements(List<T> list, int index1, int index2) {
if (index1 < 0 || index1 >= list.size() || index2 < 0 || index2 >= list.size()) {
// インデックスãŒç¯„囲外ã®å ´åˆã¯ä½•ã‚‚ã›ãšçµ‚了
return;
}
// インデックス1ã¨2ã®è¦ç´ を交æ›
T temp = list.get(index1);
list.set(index1, list.get(index2));
list.set(index2, temp);
}
public static void main(String[] args) {
// æ•´æ•°åž‹ã®ãƒªã‚¹ãƒˆ
List<Integer> intList = List.of(1, 2, 3, 4, 5);
// æ–‡å—列型ã®ãƒªã‚¹ãƒˆ
List<String> stringList = List.of("apple", "banana", "cherry", "date");
// ä»»æ„ã®åž‹ã®ãƒªã‚¹ãƒˆ
List<Double> doubleList = List.of(1.1, 2.2, 3.3, 4.4, 5.5);
// å„リストã®è¦ç´ を表示
System.out.println("Original Integer List: " + intList);
System.out.println("Original String List: " + stringList);
System.out.println("Original Double List: " + doubleList);
// å„リスト㧠swapElements メソッドを使用ã—ã¦è¦ç´ を交æ›
swapElements(intList, 1, 3);
swapElements(stringList, 0, 2);
swapElements(doubleList, 2, 4);
// 交æ›å¾Œã®ãƒªã‚¹ãƒˆã®è¦ç´ を表示
System.out.println("After Swapping Integer List: " + intList);
System.out.println("After Swapping String List: " + stringList);
System.out.println("After Swapping Double List: " + doubleList);
}
}
ã“ã®ã‚³ãƒ¼ãƒ‰ã§ã¯ã€swapElements メソッドを使用ã—ã¦æ•´æ•°åž‹ã€æ–‡å—列型ã€ãŠã‚ˆã³ãƒ€ãƒ–ル型ã®ãƒªã‚¹ãƒˆã®è¦ç´ を交æ›ã—ã¦ã„ã¾ã™ã€‚ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã™ã‚‹ã“ã¨ã§ã€ç•°ãªã‚‹åž‹ã®ãƒªã‚¹ãƒˆã«å¯¾ã—ã¦åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã§ãã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒå‘上ã—ã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰
ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ã‚’使用ã—ã¦ãƒ¡ã‚½ãƒƒãƒ‰å†…ã§ç•°ãªã‚‹åž‹ã®ãƒ‡ãƒ¼ã‚¿ã‚’処ç†ã§ãるよã†ã«ã™ã‚‹ãŸã‚ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ã™ã€‚ジェãƒãƒªã‚¯ã‚¹ã¯ã€åž‹ãƒ‘ラメータを使用ã—ã¦ã€ãƒ¡ã‚½ãƒƒãƒ‰ã‚„ã‚¯ãƒ©ã‚¹ãŒæ±Žç”¨çš„ã«å‹•作ã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€åž‹å®‰å…¨æ€§ãŒå‘上ã—ã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒé«˜ã¾ã‚Šã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã®åŸºæœ¬æ§‹æ–‡ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼š
public <T> returnType methodName(T parameter) {
// ãƒ¡ã‚½ãƒƒãƒ‰ã®æœ¬ä½“
}
ã“ã“ã§ã€<T>ã¯åž‹ãƒ‘ラメータã§ã‚りã€ãƒ¡ã‚½ãƒƒãƒ‰å†…ã§ä½¿ç”¨ã•れる型を表ã—ã¾ã™ã€‚returnTypeã¯ãƒ¡ã‚½ãƒƒãƒ‰ãŒè¿”ã™å€¤ã®åž‹ã§ã™ã€‚Tåž‹ã®å¼•æ•° parameter ã‚’å–る例ã§ã™ã€‚
以下ã«ã€ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã®ä¸»ãªç‰¹å¾´ã¨ä½¿ç”¨ä¾‹ã‚’示ã—ã¾ã™ã€‚
特徴:
- 型安全性ã®å‘上: ジェãƒãƒªã‚¯ã‚¹ã‚’使用ã™ã‚‹ã“ã¨ã§ã€ã‚³ãƒ³ãƒ‘イル時ã«åž‹ã®ä¸€è²«æ€§ãŒç¢ºèªã•れã€å®Ÿè¡Œæ™‚エラーを減少ã•ã›ã¾ã™ã€‚
- コードã®å†åˆ©ç”¨æ€§: åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰ãŒç•°ãªã‚‹åž‹ã§ä½¿ãˆã‚‹ãŸã‚ã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨ãŒå®¹æ˜“ã«ãªã‚Šã¾ã™ã€‚
使用例:
public class GenericMethodExample {
// ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰
public static <T> T getFirstElement(T[] array) {
if (array == null || array.length == 0) {
return null;
}
return array[0];
}
public static void main(String[] args) {
// Integeråž‹ã®é…列
Integer[] intArray = {1, 2, 3, 4, 5};
// Stringåž‹ã®é…列
String[] stringArray = {"apple", "banana", "cherry"};
// ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã—ã¦é…åˆ—ã®æœ€åˆã®è¦ç´ ã‚’å–å¾—
Integer firstInt = getFirstElement(intArray);
String firstString = getFirstElement(stringArray);
// çµæžœã®è¡¨ç¤º
System.out.println("First Integer: " + firstInt);
System.out.println("First String: " + firstString);
}
}
ã“ã®ä¾‹ã§ã¯ã€getFirstElement メソッドãŒã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã¨ã—ã¦å®Ÿè£…ã•れã¦ã„ã¾ã™ã€‚ç•°ãªã‚‹åž‹ã®é…列をå—ã‘å–ã‚Šã€æœ€åˆã®è¦ç´ ã‚’å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰ãŒç•°ãªã‚‹åž‹ã«å¯¾ã—ã¦ä½¿ç”¨ã§ãã€åž‹å®‰å…¨æ€§ãŒç¢ºä¿ã•れã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€æŸ”軟性ã¨åž‹å®‰å…¨æ€§ã‚’æä¾›ã—ã€ç•°ãªã‚‹åž‹ã«å¯¾ã—ã¦åŒã˜ãƒã‚¸ãƒƒã‚¯ã‚’é©ç”¨ã§ãã‚‹é‡è¦ãªæ¦‚念ã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒå‘上ã—ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®ä¿å®ˆæ€§ãŒå‘上ã—ã¾ã™ã€‚ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚„アルゴリズムã®å®Ÿè£…ãªã©ã€ã•ã¾ã–ã¾ãªå ´é¢ã§æ´»ç”¨ã•れã¾ã™ã€‚
型安全性ã®å‘上ã¨åŒæ™‚ã«ã€å†—é•·ãªã‚³ãƒ¼ãƒ‰ã®è¨˜è¿°ã‚’減らã™ã“ã¨ã§ã€é–‹ç™ºè€…ã¯ã‚ˆã‚ŠåŠ¹çŽ‡çš„ã«ã‚³ãƒ¼ãƒ‰ã‚’作æˆã§ãã¾ã™ã€‚ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€Javaã®æŸ”è»Ÿãªæ©Ÿèƒ½ã®ä¸€ç’°ã¨ã—ã¦ã€ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžã®é€²åŒ–ã«ãŠã„ã¦ä¸å¯æ¬ ãªè¦ç´ ã¨ãªã£ã¦ã„ã¾ã™ã€‚
ジェãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’é©åˆ‡ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã§ã€åž‹ã«ä¾å˜ã—ãªã„柔軟ãªã‚³ãƒ¼ãƒ‰ã‚’実ç¾ã—ã€ãƒã‚°ã‚’未然ã«é˜²ãŽã€ä¿å®ˆæ€§ã®é«˜ã„プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã‚’実ç¾ã§ãã¾ã™ã€‚プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã®åŠ¹çŽ‡å‘上ã¨ã‚³ãƒ¼ãƒ‰å“質ã®å‘上ã«å¯„与ã™ã‚‹ã‚¸ã‚§ãƒãƒªã‚¯ã‚¹ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ç¾ä»£ã®ã‚½ãƒ•トウェア開発ã«ãŠã„ã¦ä¸å¯æ¬ ãªæŠ€è¡“ã¨è¨€ãˆã‚‹ã§ã—ょã†ã€‚
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント